【发布时间】:2018-01-31 16:24:20
【问题描述】:
我最近遇到了一个错误,只需更改即可解决
impl<'a> Foo<'a> {
fn foo(&'a self, path: &str) -> Boo<'a> { /* */ }
}
到
impl<'a> Foo<'a> {
fn foo(&self, path: &str) -> Boo { /* */ }
}
根据我的理解,这没有意义,因为我认为第二个版本与应用生命周期省略的第一个版本完全相同。
如果我们为该方法引入一个新的生命周期,根据nomicon 中的这个示例似乎就是这种情况。
fn get_mut(&mut self) -> &mut T; // elided
fn get_mut<'a>(&'a mut self) -> &'a mut T; // expanded
那么这和我第一次剪断的代码有什么区别。
【问题讨论】: