Skip to content

Commit c3f5f9f

Browse files
authored
Update interior-mutability.md (#2)
1 parent ac124df commit c3f5f9f

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/interior-mutability.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
77
有时一个类型需要在存在多个别名时进行更改。在 Rust 中,这是通过一种叫做*内部可变性*的模式实现的。如果一个类型的内部状态可以通过对它的[共享引用][shared reference]来进行更改,那么就说这个类型就具有内部可变性。这违背了共享引用所指向的值不能被更改的通常[要求][ub]
88

9-
[`std::cell::UnsafeCell<T>`]类型是 Rust 中唯一可以合法失效此要求的方法。当 `UnsafeCell<T>` 存在其他不变性的别名[^译注1]时,仍然可以安全地对它包含的 `T` 进行更改或获得 `T` 的一个可变引用。与所有其他类型一样,拥有多个 `&mut UnsafeCell<T>` 别名是未定义行为。
9+
[`std::cell::UnsafeCell<T>`]类型是 Rust 中唯一可以合法实现此要求的方法。当 `UnsafeCell<T>` 存在其他不变性的别名[^译注1]时,仍然可以安全地对它包含的 `T` 进行更改或获得 `T` 的一个可变引用。与所有其他类型一样,拥有多个 `&mut UnsafeCell<T>` 别名是未定义行为。
1010

1111
通过使用 `UnsafeCell<T>` 作为字段,可以创建具有内部可变性的其他类型。标准库提供了几种这样的类型,这些类型都提供了安全的内部变更的 API。例如,[`std::cell::RefCell<T>`] 使用运行时借用检查来确保多个引用存在时的常规规则的执行。[`std::sync::atomic`]模块包含了一些类型,这些类型包装了一个只能通过原子操作访问的值,以允许在线程之间共享和修改该值。
1212

0 commit comments

Comments
 (0)