diff options
| author | Nikolai Vazquez <nvazquez1297@gmail.com> | 2017-09-30 10:08:33 -0400 |
|---|---|---|
| committer | Nikolai Vazquez <nvazquez1297@gmail.com> | 2017-09-30 10:08:33 -0400 |
| commit | 4c853adce9103b8bc84cd6b0026bcdc2eed7da31 (patch) | |
| tree | f71af0eb9d7139af598684355e690596721eac1b /src/liballoc/arc.rs | |
| parent | d9d877221f65b26e52f49bfc639ef705ff396deb (diff) | |
| parent | c4cca3a72df87def5cb18ff500c643fbff8ad08e (diff) | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'src/liballoc/arc.rs')
| -rw-r--r-- | src/liballoc/arc.rs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/liballoc/arc.rs b/src/liballoc/arc.rs index 4b695ad7c79..3b7dbd813cf 100644 --- a/src/liballoc/arc.rs +++ b/src/liballoc/arc.rs @@ -72,13 +72,13 @@ const MAX_REFCOUNT: usize = (isize::MAX) as usize; /// first: after all, isn't the point of `Arc<T>` thread safety? The key is /// this: `Arc<T>` makes it thread safe to have multiple ownership of the same /// data, but it doesn't add thread safety to its data. Consider -/// `Arc<RefCell<T>>`. `RefCell<T>` isn't [`Sync`], and if `Arc<T>` was always -/// [`Send`], `Arc<RefCell<T>>` would be as well. But then we'd have a problem: -/// `RefCell<T>` is not thread safe; it keeps track of the borrowing count using +/// `Arc<`[`RefCell<T>`]`>`. [`RefCell<T>`] isn't [`Sync`], and if `Arc<T>` was always +/// [`Send`], `Arc<`[`RefCell<T>`]`>` would be as well. But then we'd have a problem: +/// [`RefCell<T>`] is not thread safe; it keeps track of the borrowing count using /// non-atomic operations. /// /// In the end, this means that you may need to pair `Arc<T>` with some sort of -/// `std::sync` type, usually `Mutex<T>`. +/// [`std::sync`] type, usually [`Mutex<T>`][mutex]. /// /// ## Breaking cycles with `Weak` /// @@ -106,7 +106,7 @@ const MAX_REFCOUNT: usize = (isize::MAX) as usize; /// // a and b both point to the same memory location as foo. /// ``` /// -/// The `Arc::clone(&from)` syntax is the most idiomatic because it conveys more explicitly +/// The [`Arc::clone(&from)`] syntax is the most idiomatic because it conveys more explicitly /// the meaning of the code. In the example above, this syntax makes it easier to see that /// this code is creating a new reference rather than copying the whole content of foo. /// @@ -141,6 +141,9 @@ const MAX_REFCOUNT: usize = (isize::MAX) as usize; /// [upgrade]: struct.Weak.html#method.upgrade /// [`None`]: ../../std/option/enum.Option.html#variant.None /// [assoc]: ../../book/first-edition/method-syntax.html#associated-functions +/// [`RefCell<T>`]: ../../std/cell/struct.RefCell.html +/// [`std::sync`]: ../../std/sync/index.html +/// [`Arc::clone(&from)`]: #method.clone /// /// # Examples /// |
