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 | |
| parent | 7e3d1157246a13a7830431ce0253368029c8ee3e (diff) | |
| parent | 5172b8046ac6e23c6f106df79dd8c887516896b6 (diff) | |
| download | rust-856b90c400b0a3f5e8018255c7e33d3c1ae84a10.tar.gz rust-856b90c400b0a3f5e8018255c7e33d3c1ae84a10.zip | |
auto merge of #20393 : japaric/rust/impl-any, r=aturon
Needs a snapshot that contains PR #20385 r? @aturon
| -rw-r--r-- | src/liballoc/boxed.rs | 2 | ||||
| -rw-r--r-- | src/libcore/any.rs | 36 | ||||
| -rw-r--r-- | src/librustc_driver/lib.rs | 1 | ||||
| -rw-r--r-- | src/libstd/failure.rs | 2 | ||||
| -rw-r--r-- | src/libstd/thread.rs | 2 | ||||
| -rw-r--r-- | src/libtest/lib.rs | 2 | ||||
| -rw-r--r-- | src/test/compile-fail/kindck-inherited-copy-bound.rs | 1 | ||||
| -rw-r--r-- | src/test/run-pass/object-one-type-two-traits.rs | 1 |
8 files changed, 12 insertions, 35 deletions
diff --git a/src/liballoc/boxed.rs b/src/liballoc/boxed.rs index 362f6c66b59..2c318181b09 100644 --- a/src/liballoc/boxed.rs +++ b/src/liballoc/boxed.rs @@ -12,7 +12,7 @@ #![stable] -use core::any::{Any, AnyRefExt}; +use core::any::Any; use core::clone::Clone; use core::cmp::{PartialEq, PartialOrd, Eq, Ord, Ordering}; use core::default::Default; 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 diff --git a/src/librustc_driver/lib.rs b/src/librustc_driver/lib.rs index 9a993de098e..983188c7090 100644 --- a/src/librustc_driver/lib.rs +++ b/src/librustc_driver/lib.rs @@ -54,7 +54,6 @@ use rustc::lint; use rustc::metadata; use rustc::DIAGNOSTICS; -use std::any::AnyRefExt; use std::cmp::Ordering::Equal; use std::io; use std::iter::repeat; diff --git a/src/libstd/failure.rs b/src/libstd/failure.rs index d3bcdbf1a53..e48137047b0 100644 --- a/src/libstd/failure.rs +++ b/src/libstd/failure.rs @@ -12,7 +12,7 @@ use prelude::v1::*; -use any::{Any, AnyRefExt}; +use any::Any; use cell::RefCell; use io::IoResult; use rt::{backtrace, unwind}; diff --git a/src/libstd/thread.rs b/src/libstd/thread.rs index 1d6f49b04a3..63112327415 100644 --- a/src/libstd/thread.rs +++ b/src/libstd/thread.rs @@ -435,7 +435,7 @@ impl<T: Send> Drop for JoinGuard<T> { mod test { use prelude::v1::*; - use any::{Any, AnyRefExt}; + use any::Any; use sync::mpsc::{channel, Sender}; use boxed::BoxAny; use result; diff --git a/src/libtest/lib.rs b/src/libtest/lib.rs index 4bac20dd67c..3fb2211eff2 100644 --- a/src/libtest/lib.rs +++ b/src/libtest/lib.rs @@ -58,7 +58,7 @@ use serialize::{json, Decodable, Encodable}; use term::Terminal; use term::color::{Color, RED, YELLOW, GREEN, CYAN}; -use std::any::{Any, AnyRefExt}; +use std::any::Any; use std::cmp; use std::collections::BTreeMap; use std::f64; diff --git a/src/test/compile-fail/kindck-inherited-copy-bound.rs b/src/test/compile-fail/kindck-inherited-copy-bound.rs index f5740992af4..d66fd0d77d6 100644 --- a/src/test/compile-fail/kindck-inherited-copy-bound.rs +++ b/src/test/compile-fail/kindck-inherited-copy-bound.rs @@ -11,7 +11,6 @@ // Test that Copy bounds inherited by trait are checked. use std::any::Any; -use std::any::AnyRefExt; trait Foo : Copy { } diff --git a/src/test/run-pass/object-one-type-two-traits.rs b/src/test/run-pass/object-one-type-two-traits.rs index f8bc0929bfa..4964b3f6728 100644 --- a/src/test/run-pass/object-one-type-two-traits.rs +++ b/src/test/run-pass/object-one-type-two-traits.rs @@ -12,7 +12,6 @@ // traits. use std::any::Any; -use std::any::AnyRefExt; trait Wrap { fn get(&self) -> int; |
