Add more understandable explanations.

pull/588/head
百小僧 3 years ago committed by GitHub
parent 766b3f3635
commit 3020159afe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -77,6 +77,8 @@ fn main() {
这就解释了可变借用为啥会在 `main` 函数作用域内有效,最终导致 `foo.share()` 无法再进行不可变借用。
简单点说,在 Rust 中**引用作用域持续到最后一次使用后失效**`loan` 的作用域来自可变引用 `&mut foo` 且持续到 `println` 结束后,而在此期间 `foo.share()` 又进行了一次不可变 `&foo` 引用,违法了借用规则可变引用与不可变引用不能同时存在,因此编译器不能编译通过。
上述代码实际上完全是正确的,但是因为生命周期系统的“粗糙实现”,导致了编译错误,目前来说,遇到这种生命周期系统不够聪明导致的编译错误,我们也没有太好的办法,只能修改代码去满足它的需求,并期待以后它会更聪明。
#### 例子 2

Loading…
Cancel
Save