|
13 | 13 | //! Rust memory safety is based on this rule: Given an object `T`, it is only possible to
|
14 | 14 | //! have one of the following:
|
15 | 15 | //!
|
16 |
| -//! - Having several immutable references (`&T`) to the object (also know as Aliasing). |
17 |
| -//! - Having one mutable reference (`&mut T`) to the object (also know as Mutability). |
| 16 | +//! - Having several immutable references (`&T`) to the object (also known as **aliasing**). |
| 17 | +//! - Having one mutable reference (`&mut T`) to the object (also known as **mutability**). |
18 | 18 | //!
|
19 | 19 | //! This is enforced by the Rust compiler. However, there are situations where this rule is not
|
20 | 20 | //! flexible enough. Sometimes it is required to have multiple references to an object and yet
|
21 | 21 | //! mutate it.
|
22 | 22 | //!
|
23 |
| -//! Shareable mutable containers exist to permit mutability in the presence of aliasing in a |
24 |
| -//! controlled manner. Both `Cell<T>` and `RefCell<T>` allows to do this in a single threaded |
| 23 | +//! Shareable mutable containers exist to permit mutability in a controlled manner, even in the |
| 24 | +//! presence of aliasing. Both `Cell<T>` and `RefCell<T>` allows to do this in a single threaded |
25 | 25 | //! way. However, neither `Cell<T>` nor `RefCell<T>` are thread safe (they do not implement
|
26 |
| -//! `Sync`), if you need to do Aliasing and Mutation between multiple threads is possible to use |
27 |
| -//! [`Mutex`](../../std/sync/struct.Mutex.html), [`RwLock`](../../std/sync/struct.RwLock.html) or |
| 26 | +//! `Sync`). If you need to do aliasing and mutation between multiple threads it is possible to |
| 27 | +//! use [`Mutex`](../../std/sync/struct.Mutex.html), |
| 28 | +//! [`RwLock`](../../std/sync/struct.RwLock.html) or |
28 | 29 | //! [`atomic`](../../core/sync/atomic/index.html) types.
|
29 | 30 | //!
|
30 | 31 | //! Values of the `Cell<T>` and `RefCell<T>` types may be mutated through shared references (i.e.
|
|
0 commit comments