rust不会在没有显式指定的情况下推断函数参数的生存期吗?

wydwbb8l  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(122)
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);
    }
}

请原谅我这个超级菜鸟的问题,但是这些功能不同吗?在没有显式指定的情况下,是否已经推断出两个参数的生存期不同?如果它们是相同的,那么像这样指定它们有什么好处吗?或者这是每个人都遵循的通用格式吗?

avwztpqn

avwztpqn1#

这样想:当引用没有生存期时,它有自己的生存期
你知道,在rust之前,每个引用都有一个生存期,有时你为每个引用都做了一个生存期,但是人们意识到添加隐式生存期是很好的,每个引用默认都有自己的生存期,开发人员甚至不需要考虑它,这使得工作更容易,生存期仍然存在,因为在很多情况下你需要指定它们
所以这些函数是一样的

相关问题