|
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