|
|
@ -77,7 +77,7 @@ fn main() {
|
|
|
|
|
|
|
|
|
|
|
|
这就解释了可变借用为啥会在 `main` 函数作用域内有效,最终导致 `foo.share()` 无法再进行不可变借用。
|
|
|
|
这就解释了可变借用为啥会在 `main` 函数作用域内有效,最终导致 `foo.share()` 无法再进行不可变借用。
|
|
|
|
|
|
|
|
|
|
|
|
总结下:`&mut self` 借用得生命周期和 `loan` 的生命周期相同,而后者将持续到 `println` 结束。而在此期间 `foo.share()` 又进行了一次不可变 `&foo` 借用,违背了可变借用与不可变借用不能同时存在的规则,最终导致了编译错误。
|
|
|
|
总结下:`&mut self` 借用的生命周期和 `loan` 的生命周期相同,将持续到 `println` 结束。而在此期间 `foo.share()` 又进行了一次不可变 `&foo` 借用,违背了可变借用与不可变借用不能同时存在的规则,最终导致了编译错误。
|
|
|
|
|
|
|
|
|
|
|
|
上述代码实际上完全是正确的,但是因为生命周期系统的“粗糙实现”,导致了编译错误,目前来说,遇到这种生命周期系统不够聪明导致的编译错误,我们也没有太好的办法,只能修改代码去满足它的需求,并期待以后它会更聪明。
|
|
|
|
上述代码实际上完全是正确的,但是因为生命周期系统的“粗糙实现”,导致了编译错误,目前来说,遇到这种生命周期系统不够聪明导致的编译错误,我们也没有太好的办法,只能修改代码去满足它的需求,并期待以后它会更聪明。
|
|
|
|
|
|
|
|
|
|
|
|