update 生命周期过大02

pull/310/head
sunface 3 years ago
parent dc8a463994
commit af9a9b6d4f

@ -120,7 +120,11 @@ impl<'a> Writer<'a> {
... ...
} }
``` ```
好像有点问题,`indent`返回的`Writer`的生命周期和外面的`Writer`的生命周期一模一样,这很不合理,一眼就能看出前者远小于后者,那我们尝试着修改下`indent`: 好像有点问题,`indent`返回的`Writer`的生命周期和外面调用者的`Writer`的生命周期一模一样,这很不合理,一眼就能看出前者远小于后者。
这里稍微展开以下,为何`indent`方法返回值的生命周期不能与参数中的`self`相同。**首先,我们假设它们可以相同,也就是上面的代码可以编译通过**,由于此时在返回值中借用了`self`的可变引用,意味着**如果你在返回值被使用后,还继续使用`self` 会导致重复借用的错误,因为返回值的生命周期将持续到 `self` 结束**。
既然不能相同,那我们尝试着修改下`indent`:
```rust ```rust
fn indent<'b>(&'b mut self) -> Writer<'b> { fn indent<'b>(&'b mut self) -> Writer<'b> {
Writer { Writer {

Loading…
Cancel
Save