pub(crate) fn foo<'a, 'b>(param1: &'a str, param2: &'b str) -> &'b str {
if param2.starts_with(param1) {
&s[param1.len()..]
} else {
panic!("expected {}", param1);
}
}
pub(crate) fn foo<'b>(param1: &str, param2: &'b str) -> &'b str {
if param2.starts_with(param1) {
&s[param1.len()..]
} else {
panic!("expected {}", param1);
}
}
请原谅我这个超级菜鸟的问题,但是这些功能不同吗?在没有显式指定的情况下,是否已经推断出两个参数的生存期不同?如果它们是相同的,那么像这样指定它们有什么好处吗?或者这是每个人都遵循的通用格式吗?
1条答案
按热度按时间avwztpqn1#
这样想:当引用没有生存期时,它有自己的生存期
你知道,在rust之前,每个引用都有一个生存期,有时你为每个引用都做了一个生存期,但是人们意识到添加隐式生存期是很好的,每个引用默认都有自己的生存期,开发人员甚至不需要考虑它,这使得工作更容易,生存期仍然存在,因为在很多情况下你需要指定它们
所以这些函数是一样的