From b05a1f41b8e25f4a0922d013bfca475a10cd0369 Mon Sep 17 00:00:00 2001 From: butonly Date: Sun, 15 Oct 2023 01:14:13 -0500 Subject: [PATCH] Update cell-refcell.md --- src/advance/smart-pointer/cell-refcell.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/advance/smart-pointer/cell-refcell.md b/src/advance/smart-pointer/cell-refcell.md index 76ffe26a..99d87398 100644 --- a/src/advance/smart-pointer/cell-refcell.md +++ b/src/advance/smart-pointer/cell-refcell.md @@ -144,7 +144,7 @@ fn main() { } ``` -上面的代码会报错,因为我们不能对一个不可变的值进行可变借用,这会破坏 Rust 的安全性保证,相反,你可以对一个可变值进行不可变借用。原因是:当值不可变时,可能会有多个不可变的引用指向它,此时若将修改其中一个为可变的,会造成可变引用与不可变引用共存的情况;而当值可变时,最多只会有一个可变引用指向它,将其修改为不可变,那么最终依然是只有一个不可变的引用指向它。 +上面的代码会报错,因为我们不能对一个不可变的值进行可变借用,这会破坏 Rust 的安全性保证,相反,你可以对一个可变值进行不可变借用。原因是:当值不可变时,可能会有多个不可变的引用指向它,此时若将其中一个修改为可变的,会造成可变引用与不可变引用共存的情况;而当值可变时,最多只会有一个可变引用指向它,将其修改为不可变,那么最终依然是只有一个不可变的引用指向它。 虽然基本借用规则是 Rust 的基石,然而在某些场景中,一个值可以在其方法内部被修改,同时对于其它代码不可变,是很有用的: