diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2015-02-24 23:27:20 -0800 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2015-02-28 23:13:02 -0800 |
| commit | 94d71f8836b3bfac3370e4d324ca1987d843552f (patch) | |
| tree | bf0f534115ebc644407e2b6b0c74ad6a027fa0c1 /src/liballoc | |
| parent | 8a69110c3b1122596ddc8999bb2403a5777bb8ed (diff) | |
| download | rust-94d71f8836b3bfac3370e4d324ca1987d843552f.tar.gz rust-94d71f8836b3bfac3370e4d324ca1987d843552f.zip | |
std: Implement stdio for `std::io`
This is an implementation of RFC 899 and adds stdio functionality to the new
`std::io` module. Details of the API can be found on the RFC, but from a high
level:
* `io::{stdin, stdout, stderr}` constructors are now available. There are also
`*_raw` variants for unbuffered and unlocked access.
* All handles are globally shared (excluding raw variants).
* The stderr handle is no longer buffered.
* All handles can be explicitly locked (excluding the raw variants).
The `print!` and `println!` machinery has not yet been hooked up to these
streams just yet. The `std::fmt::output` module has also not yet been
implemented as part of this commit.
Diffstat (limited to 'src/liballoc')
| -rw-r--r-- | src/liballoc/arc.rs | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/liballoc/arc.rs b/src/liballoc/arc.rs index 88a3752c88a..c95b413b397 100644 --- a/src/liballoc/arc.rs +++ b/src/liballoc/arc.rs @@ -201,10 +201,11 @@ impl<T> Arc<T> { impl<T> Arc<T> { #[inline] fn inner(&self) -> &ArcInner<T> { - // This unsafety is ok because while this arc is alive we're guaranteed that the inner - // pointer is valid. Furthermore, we know that the `ArcInner` structure itself is `Sync` - // because the inner data is `Sync` as well, so we're ok loaning out an immutable pointer - // to these contents. + // This unsafety is ok because while this arc is alive we're guaranteed + // that the inner pointer is valid. Furthermore, we know that the + // `ArcInner` structure itself is `Sync` because the inner data is + // `Sync` as well, so we're ok loaning out an immutable pointer to these + // contents. unsafe { &**self._ptr } } } @@ -236,13 +237,15 @@ impl<T> Clone for Arc<T> { /// ``` #[inline] fn clone(&self) -> Arc<T> { - // Using a relaxed ordering is alright here, as knowledge of the original reference - // prevents other threads from erroneously deleting the object. + // Using a relaxed ordering is alright here, as knowledge of the + // original reference prevents other threads from erroneously deleting + // the object. // - // As explained in the [Boost documentation][1], Increasing the reference counter can - // always be done with memory_order_relaxed: New references to an object can only be formed - // from an existing reference, and passing an existing reference from one thread to another - // must already provide any required synchronization. + // As explained in the [Boost documentation][1], Increasing the + // reference counter can always be done with memory_order_relaxed: New + // references to an object can only be formed from an existing + // reference, and passing an existing reference from one thread to + // another must already provide any required synchronization. // // [1]: (www.boost.org/doc/libs/1_55_0/doc/html/atomic/usage_examples.html) self.inner().strong.fetch_add(1, Relaxed); |
