diff options
| author | Ralf Jung <post@ralfj.de> | 2019-07-16 14:47:51 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2019-07-16 14:47:51 +0200 |
| commit | d30b36efc528e7391357d8d2f599c6cf2e427fd2 (patch) | |
| tree | 1c5ff88a1bb65654e0ee83b71997b2abe037ae50 /src/libcore | |
| parent | 02785dabad07d19b8c76a7f86763801d5d3497ff (diff) | |
| download | rust-d30b36efc528e7391357d8d2f599c6cf2e427fd2.tar.gz rust-d30b36efc528e7391357d8d2f599c6cf2e427fd2.zip | |
state also in the intro that UnsafeCell has no effect on &mut
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/cell.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/libcore/cell.rs b/src/libcore/cell.rs index f74e945b3cc..0aaf5269a3d 100644 --- a/src/libcore/cell.rs +++ b/src/libcore/cell.rs @@ -1412,8 +1412,9 @@ impl<T: ?Sized + fmt::Display> fmt::Display for RefMut<'_, T> { /// If you have a reference `&SomeStruct`, then normally in Rust all fields of `SomeStruct` are /// immutable. The compiler makes optimizations based on the knowledge that `&T` is not mutably /// aliased or mutated, and that `&mut T` is unique. `UnsafeCell<T>` is the only core language -/// feature to work around this restriction. All other types that allow internal mutability, such as -/// `Cell<T>` and `RefCell<T>`, use `UnsafeCell` to wrap their internal data. +/// feature to work around the restriction that `&T` may not be mutated. All other types that +/// allow internal mutability, such as `Cell<T>` and `RefCell<T>`, use `UnsafeCell` to wrap their +/// internal data. There is *no* legal way to obtain aliasing `&mut`, not even with `UnsafeCell<T>`. /// /// The `UnsafeCell` API itself is technically very simple: it gives you a raw pointer `*mut T` to /// its contents. It is up to _you_ as the abstraction designer to use that raw pointer correctly. |
