From: Jorge Aparicio Date: Thu, 1 Jan 2015 06:13:08 +0000 (-0500) Subject: remove `Any[Mut]RefExt` traits in favor of `impl Any` X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=5172b8046ac6e23c6f106df79dd8c887516896b6;p=rust.git remove `Any[Mut]RefExt` traits in favor of `impl Any` --- diff --git a/src/liballoc/boxed.rs b/src/liballoc/boxed.rs index e836b08459b..ca010ac986a 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(value: &T) { @@ -102,24 +102,11 @@ fn get_type_id(&self) -> TypeId { TypeId::of::() } // 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(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(self) -> Option<&'a T>; -} - -#[stable] -impl<'a> AnyRefExt<'a> for &'a Any { #[inline] - fn is(self) -> bool { + pub fn is(&self) -> bool { // Get TypeId of the type this function is instantiated with let t = TypeId::of::(); @@ -130,8 +117,11 @@ fn is(self) -> bool { 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(self) -> Option<&'a T> { + pub fn downcast_ref<'a, T: 'static>(&'a self) -> Option<&'a T> { if self.is::() { unsafe { // Get the raw representation of the trait object @@ -144,22 +134,12 @@ fn downcast_ref(self) -> Option<&'a T> { 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(self) -> Option<&'a mut T>; -} - -#[stable] -impl<'a> AnyMutRefExt<'a> for &'a mut Any { #[inline] - fn downcast_mut(self) -> Option<&'a mut T> { + pub fn downcast_mut<'a, T: 'static>(&'a mut self) -> Option<&'a mut T> { if self.is::() { 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::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 3c87309dabc..371cf8b3b5a 100644 --- a/src/libstd/thread.rs +++ b/src/libstd/thread.rs @@ -442,7 +442,7 @@ fn drop(&mut self) { 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 b2d3611fc64..e8d6b6f1ff6 100644 --- a/src/libtest/lib.rs +++ b/src/libtest/lib.rs @@ -58,7 +58,7 @@ 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;