diff options
| author | Richo Healey <richo@psych0tik.net> | 2015-04-07 00:40:22 -0700 |
|---|---|---|
| committer | Richo Healey <richo@psych0tik.net> | 2015-04-07 22:50:36 -0700 |
| commit | a329a61b9bf01bfc3f9f7316bb800b2bc8b76382 (patch) | |
| tree | 2c46d4e549d500b30787bfd9d16481f6cbef1849 /src/liballoc | |
| parent | b2e65ee6e4e1523b1d4c56ea0ec430e28946f2f4 (diff) | |
| download | rust-a329a61b9bf01bfc3f9f7316bb800b2bc8b76382.tar.gz rust-a329a61b9bf01bfc3f9f7316bb800b2bc8b76382.zip | |
alloc: impl fmt::Pointer for Rc, Arc and Box
Closes #24091
Diffstat (limited to 'src/liballoc')
| -rw-r--r-- | src/liballoc/arc.rs | 7 | ||||
| -rw-r--r-- | src/liballoc/boxed.rs | 10 | ||||
| -rw-r--r-- | src/liballoc/rc.rs | 7 |
3 files changed, 24 insertions, 0 deletions
diff --git a/src/liballoc/arc.rs b/src/liballoc/arc.rs index 68bde147611..ff176d81591 100644 --- a/src/liballoc/arc.rs +++ b/src/liballoc/arc.rs @@ -669,6 +669,13 @@ impl<T: fmt::Debug> fmt::Debug for Arc<T> { } #[stable(feature = "rust1", since = "1.0.0")] +impl<T> fmt::Pointer for Arc<T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Pointer::fmt(&*self._ptr, f) + } +} + +#[stable(feature = "rust1", since = "1.0.0")] impl<T: Default + Sync + Send> Default for Arc<T> { #[stable(feature = "rust1", since = "1.0.0")] fn default() -> Arc<T> { Arc::new(Default::default()) } diff --git a/src/liballoc/boxed.rs b/src/liballoc/boxed.rs index 2801cf38cb7..4468e425a85 100644 --- a/src/liballoc/boxed.rs +++ b/src/liballoc/boxed.rs @@ -276,6 +276,16 @@ impl<T: fmt::Debug + ?Sized> fmt::Debug for Box<T> { } #[stable(feature = "rust1", since = "1.0.0")] +impl<T> fmt::Pointer for Box<T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + // It's not possible to extract the inner Uniq directly from the Box, + // instead we cast it to a *const which aliases the Unique + let ptr: *const T = &**self; + fmt::Pointer::fmt(&ptr, f) + } +} + +#[stable(feature = "rust1", since = "1.0.0")] impl<T: ?Sized> Deref for Box<T> { type Target = T; diff --git a/src/liballoc/rc.rs b/src/liballoc/rc.rs index 56822cfe28a..67805d10a4a 100644 --- a/src/liballoc/rc.rs +++ b/src/liballoc/rc.rs @@ -634,6 +634,13 @@ impl<T: fmt::Debug> fmt::Debug for Rc<T> { } } +#[stable(feature = "rust1", since = "1.0.0")] +impl<T> fmt::Pointer for Rc<T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fmt::Pointer::fmt(&*self._ptr, f) + } +} + /// A weak version of `Rc<T>`. /// /// Weak references do not count when determining if the inner value should be |
