diff options
| author | Flavio Percoco <flaper87@gmail.com> | 2015-01-20 15:51:09 +0100 |
|---|---|---|
| committer | Flavio Percoco <flaper87@gmail.com> | 2015-01-20 22:15:44 +0100 |
| commit | cd631c6914d384538352604059a7e4abb31d8c46 (patch) | |
| tree | 628f7254ee3674c7b603721aefb8cc1aefba1c03 /src/liballoc | |
| parent | 3bf41dafcfb6c979efb4e2438e047e1a54045eec (diff) | |
| download | rust-cd631c6914d384538352604059a7e4abb31d8c46.tar.gz rust-cd631c6914d384538352604059a7e4abb31d8c46.zip | |
Register snapshot for 9006c3c
Diffstat (limited to 'src/liballoc')
| -rw-r--r-- | src/liballoc/rc.rs | 154 |
1 files changed, 0 insertions, 154 deletions
diff --git a/src/liballoc/rc.rs b/src/liballoc/rc.rs index 7191a7af346..b516d9b4d31 100644 --- a/src/liballoc/rc.rs +++ b/src/liballoc/rc.rs @@ -174,61 +174,17 @@ struct RcBox<T> { /// See the [module level documentation](../index.html) for more details. #[unsafe_no_drop_flag] #[stable] -#[cfg(stage0)] // NOTE remove impl after next snapshot pub struct Rc<T> { // FIXME #12808: strange names to try to avoid interfering with field accesses of the contained // type via Deref _ptr: NonZero<*mut RcBox<T>>, - _nosend: marker::NoSend, - _noshare: marker::NoSync } -/// An immutable reference-counted pointer type. -/// -/// See the [module level documentation](../index.html) for more details. -#[unsafe_no_drop_flag] -#[stable] -#[cfg(not(stage0))] // NOTE remove cfg after next snapshot -pub struct Rc<T> { - // FIXME #12808: strange names to try to avoid interfering with field accesses of the contained - // type via Deref - _ptr: NonZero<*mut RcBox<T>>, -} - -#[cfg(not(stage0))] // NOTE remove cfg after next snapshot impl<T> !marker::Send for Rc<T> {} -#[cfg(not(stage0))] // NOTE remove cfg after next snapshot impl<T> !marker::Sync for Rc<T> {} impl<T> Rc<T> { - /// Constructs a new `Rc<T>`. - /// - /// # Examples - /// - /// ``` - /// use std::rc::Rc; - /// - /// let five = Rc::new(5i); - /// ``` - #[stable] - #[cfg(stage0)] // NOTE remove after next snapshot - pub fn new(value: T) -> Rc<T> { - unsafe { - Rc { - // there is an implicit weak pointer owned by all the strong pointers, which - // ensures that the weak destructor never frees the allocation while the strong - // destructor is running, even if the weak pointer is stored inside the strong one. - _ptr: NonZero::new(transmute(box RcBox { - value: value, - strong: Cell::new(1), - weak: Cell::new(1) - })), - _nosend: marker::NoSend, - _noshare: marker::NoSync - } - } - } /// Constructs a new `Rc<T>`. /// @@ -240,7 +196,6 @@ impl<T> Rc<T> { /// let five = Rc::new(5i); /// ``` #[stable] - #[cfg(not(stage0))] // NOTE remove cfg after next snapshot pub fn new(value: T) -> Rc<T> { unsafe { Rc { @@ -267,29 +222,6 @@ impl<T> Rc<T> { /// /// let weak_five = five.downgrade(); /// ``` - #[cfg(stage0)] // NOTE remove after next snapshot - #[unstable = "Weak pointers may not belong in this module"] - pub fn downgrade(&self) -> Weak<T> { - self.inc_weak(); - Weak { - _ptr: self._ptr, - _nosend: marker::NoSend, - _noshare: marker::NoSync - } - } - - /// Downgrades the `Rc<T>` to a `Weak<T>` reference. - /// - /// # Examples - /// - /// ``` - /// use std::rc::Rc; - /// - /// let five = Rc::new(5i); - /// - /// let weak_five = five.downgrade(); - /// ``` - #[cfg(not(stage0))] // NOTE remove cfg after next snapshot #[unstable = "Weak pointers may not belong in this module"] pub fn downgrade(&self) -> Weak<T> { self.inc_weak(); @@ -483,25 +415,6 @@ impl<T> Drop for Rc<T> { #[stable] impl<T> Clone for Rc<T> { - /// Makes a clone of the `Rc<T>`. - /// - /// This increases the strong reference count. - /// - /// # Examples - /// - /// ``` - /// use std::rc::Rc; - /// - /// let five = Rc::new(5i); - /// - /// five.clone(); - /// ``` - #[inline] - #[cfg(stage0)] // NOTE remove after next snapshot - fn clone(&self) -> Rc<T> { - self.inc_strong(); - Rc { _ptr: self._ptr, _nosend: marker::NoSend, _noshare: marker::NoSync } - } /// Makes a clone of the `Rc<T>`. /// @@ -517,7 +430,6 @@ impl<T> Clone for Rc<T> { /// five.clone(); /// ``` #[inline] - #[cfg(not(stage0))] // NOTE remove cfg after next snapshot fn clone(&self) -> Rc<T> { self.inc_strong(); Rc { _ptr: self._ptr } @@ -714,66 +626,21 @@ impl<T: fmt::String> fmt::String for Rc<T> { /// See the [module level documentation](../index.html) for more. #[unsafe_no_drop_flag] #[unstable = "Weak pointers may not belong in this module."] -#[cfg(stage0)] // NOTE remove impl after next snapshot pub struct Weak<T> { // FIXME #12808: strange names to try to avoid interfering with // field accesses of the contained type via Deref _ptr: NonZero<*mut RcBox<T>>, - _nosend: marker::NoSend, - _noshare: marker::NoSync } -/// A weak version of `Rc<T>`. -/// -/// Weak references do not count when determining if the inner value should be dropped. -/// -/// See the [module level documentation](../index.html) for more. -#[unsafe_no_drop_flag] -#[unstable = "Weak pointers may not belong in this module."] -#[cfg(not(stage0))] // NOTE remove cfg after next snapshot -pub struct Weak<T> { - // FIXME #12808: strange names to try to avoid interfering with - // field accesses of the contained type via Deref - _ptr: NonZero<*mut RcBox<T>>, -} - -#[cfg(not(stage0))] // NOTE remove cfg after next snapshot #[allow(unstable)] impl<T> !marker::Send for Weak<T> {} -#[cfg(not(stage0))] // NOTE remove cfg after next snapshot #[allow(unstable)] impl<T> !marker::Sync for Weak<T> {} #[unstable = "Weak pointers may not belong in this module."] impl<T> Weak<T> { - /// Upgrades a weak reference to a strong reference. - /// - /// Upgrades the `Weak<T>` reference to an `Rc<T>`, if possible. - /// - /// Returns `None` if there were no strong references and the data was destroyed. - /// - /// # Examples - /// - /// ``` - /// use std::rc::Rc; - /// - /// let five = Rc::new(5i); - /// - /// let weak_five = five.downgrade(); - /// - /// let strong_five: Option<Rc<_>> = weak_five.upgrade(); - /// ``` - #[cfg(stage0)] // NOTE remove after next snapshot - pub fn upgrade(&self) -> Option<Rc<T>> { - if self.strong() == 0 { - None - } else { - self.inc_strong(); - Some(Rc { _ptr: self._ptr, _nosend: marker::NoSend, _noshare: marker::NoSync }) - } - } /// Upgrades a weak reference to a strong reference. /// @@ -792,7 +659,6 @@ impl<T> Weak<T> { /// /// let strong_five: Option<Rc<_>> = weak_five.upgrade(); /// ``` - #[cfg(not(stage0))] // NOTE remove cfg after next snapshot pub fn upgrade(&self) -> Option<Rc<T>> { if self.strong() == 0 { None @@ -849,25 +715,6 @@ impl<T> Drop for Weak<T> { #[unstable = "Weak pointers may not belong in this module."] impl<T> Clone for Weak<T> { - /// Makes a clone of the `Weak<T>`. - /// - /// This increases the weak reference count. - /// - /// # Examples - /// - /// ``` - /// use std::rc::Rc; - /// - /// let weak_five = Rc::new(5i).downgrade(); - /// - /// weak_five.clone(); - /// ``` - #[inline] - #[cfg(stage0)] // NOTE remove after next snapshot - fn clone(&self) -> Weak<T> { - self.inc_weak(); - Weak { _ptr: self._ptr, _nosend: marker::NoSend, _noshare: marker::NoSync } - } /// Makes a clone of the `Weak<T>`. /// @@ -883,7 +730,6 @@ impl<T> Clone for Weak<T> { /// weak_five.clone(); /// ``` #[inline] - #[cfg(not(stage0))] // NOTE remove cfg after next snapshot fn clone(&self) -> Weak<T> { self.inc_weak(); Weak { _ptr: self._ptr } |
