当我尝试编译此代码时:
pub struct Context<'a> {
pub outer: Option<&'a mut Context<'a>>,
}
impl<'a> Context<'a> {
pub fn inside(outer: &'a mut Context) -> Context<'a> {
Context { outer: Some(outer) }
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
pub struct Context<'a> {
pub outer: Option<&'a mut Context<'a>>,
}
impl<'a> Context<'a> {
pub fn inside(outer: &'a mut Context) -> Context<'a> {
Context { outer: Some(outer) }
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?
这是因为您没有履行您所要求的义务。
由于生命周期省略,您的代码相当于:
pub fn inside<'b>(outer: &'a mut Context<'b>) -> Context<'a>
Run Code Online (Sandbox Code Playgroud)
将您的代码更改为
pub fn inside(outer: &'a mut Context<'a>) -> Context<'a>
Run Code Online (Sandbox Code Playgroud)
它会编译。
| 归档时间: |
|
| 查看次数: |
3186 次 |
| 最近记录: |