diff options
| author | bors <bors@rust-lang.org> | 2015-01-04 11:01:04 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-01-04 11:01:04 +0000 |
| commit | 856b90c400b0a3f5e8018255c7e33d3c1ae84a10 (patch) | |
| tree | e7f5fe2a5ba597de623119acc8f1567f3ed58659 /src/libcore | |
| parent | 7e3d1157246a13a7830431ce0253368029c8ee3e (diff) | |
| parent | 5172b8046ac6e23c6f106df79dd8c887516896b6 (diff) | |
auto merge of #20393 : japaric/rust/impl-any, r=aturon
Needs a snapshot that contains PR #20385 r? @aturon
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/any.rs | 36 |
1 files changed, 8 insertions, 28 deletions
diff --git a/src/libcore/any.rs b/src/libcore/any.rs index 75feb4d8828..33cb335d756 100644 --- a/src/libcore/any.rs +++ b/src/libcore/any.rs @@ -35,7 +35,7 @@ //! //! ```rust //! use std::fmt::Show; -//! use std::any::{Any, AnyRefExt}; +//! use std::any::Any; //! //! // Logger function for any type that implements Show. //! fn log<T: Any+Show>(value: &T) { @@ -102,24 +102,11 @@ impl<T: 'static> Any for T { // Implemented as three extension traits so that the methods can be generic. /////////////////////////////////////////////////////////////////////////////// -/// Extension methods for a referenced `Any` trait object -#[unstable = "this trait will not be necessary once DST lands, it will be a \ - part of `impl Any`"] -pub trait AnyRefExt<'a> { +impl Any { /// Returns true if the boxed type is the same as `T` #[stable] - fn is<T: 'static>(self) -> bool; - - /// Returns some reference to the boxed value if it is of type `T`, or - /// `None` if it isn't. - #[unstable = "naming conventions around acquiring references may change"] - fn downcast_ref<T: 'static>(self) -> Option<&'a T>; -} - -#[stable] -impl<'a> AnyRefExt<'a> for &'a Any { #[inline] - fn is<T: 'static>(self) -> bool { + pub fn is<T: 'static>(&self) -> bool { // Get TypeId of the type this function is instantiated with let t = TypeId::of::<T>(); @@ -130,8 +117,11 @@ impl<'a> AnyRefExt<'a> for &'a Any { t == boxed } + /// Returns some reference to the boxed value if it is of type `T`, or + /// `None` if it isn't. + #[unstable = "naming conventions around acquiring references may change"] #[inline] - fn downcast_ref<T: 'static>(self) -> Option<&'a T> { + pub fn downcast_ref<'a, T: 'static>(&'a self) -> Option<&'a T> { if self.is::<T>() { unsafe { // Get the raw representation of the trait object @@ -144,22 +134,12 @@ impl<'a> AnyRefExt<'a> for &'a Any { None } } -} -/// Extension methods for a mutable referenced `Any` trait object -#[unstable = "this trait will not be necessary once DST lands, it will be a \ - part of `impl Any`"] -pub trait AnyMutRefExt<'a> { /// Returns some mutable reference to the boxed value if it is of type `T`, or /// `None` if it isn't. #[unstable = "naming conventions around acquiring references may change"] - fn downcast_mut<T: 'static>(self) -> Option<&'a mut T>; -} - -#[stable] -impl<'a> AnyMutRefExt<'a> for &'a mut Any { #[inline] - fn downcast_mut<T: 'static>(self) -> Option<&'a mut T> { + pub fn downcast_mut<'a, T: 'static>(&'a mut self) -> Option<&'a mut T> { if self.is::<T>() { unsafe { // Get the raw representation of the trait object |
