From 94d71f8836b3bfac3370e4d324ca1987d843552f Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 24 Feb 2015 23:27:20 -0800 Subject: 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. --- src/liballoc/arc.rs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'src/liballoc') 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 Arc { impl Arc { #[inline] fn inner(&self) -> &ArcInner { - // 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 Clone for Arc { /// ``` #[inline] fn clone(&self) -> Arc { - // 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); -- cgit 1.4.1-3-g733a5