diff --git a/src/libcollections/vec.rs b/src/libcollections/vec.rs index 1f8fd32da9ab8..abc586ec50875 100644 --- a/src/libcollections/vec.rs +++ b/src/libcollections/vec.rs @@ -1818,20 +1818,6 @@ impl fmt::Debug for Vec { } } -#[stable(feature = "rust1", since = "1.0.0")] -impl AsRef> for Vec { - fn as_ref(&self) -> &Vec { - self - } -} - -#[stable(feature = "vec_as_mut", since = "1.5.0")] -impl AsMut> for Vec { - fn as_mut(&mut self) -> &mut Vec { - self - } -} - #[stable(feature = "rust1", since = "1.0.0")] impl AsRef<[T]> for Vec { fn as_ref(&self) -> &[T] { diff --git a/src/libcore/convert.rs b/src/libcore/convert.rs index 830bbc079ad1e..dcc5f3ae2db86 100644 --- a/src/libcore/convert.rs +++ b/src/libcore/convert.rs @@ -224,6 +224,14 @@ pub trait TryFrom: Sized { // GENERIC IMPLS //////////////////////////////////////////////////////////////////////////////// +// As is reflexive +#[stable(feature = "rust1", since = "1.0.0")] +impl<'a, T: ?Sized> AsRef for T { + fn as_ref(&self) -> &T { + self + } +} + // As lifts over & #[stable(feature = "rust1", since = "1.0.0")] impl<'a, T: ?Sized, U: ?Sized> AsRef for &'a T where T: AsRef { @@ -248,6 +256,14 @@ impl<'a, T: ?Sized, U: ?Sized> AsRef for &'a mut T where T: AsRef { // } // } +// AsMut is reflexive +#[stable(feature = "rust1", since = "1.0.0")] +impl<'a, T: ?Sized> AsMut for T { + fn as_mut(&mut self) -> &mut T { + self + } +} + // AsMut lifts over &mut #[stable(feature = "rust1", since = "1.0.0")] impl<'a, T: ?Sized, U: ?Sized> AsMut for &'a mut T where T: AsMut { @@ -288,29 +304,3 @@ impl TryInto for T where U: TryFrom { U::try_from(self) } } - -//////////////////////////////////////////////////////////////////////////////// -// CONCRETE IMPLS -//////////////////////////////////////////////////////////////////////////////// - -#[stable(feature = "rust1", since = "1.0.0")] -impl AsRef<[T]> for [T] { - fn as_ref(&self) -> &[T] { - self - } -} - -#[stable(feature = "rust1", since = "1.0.0")] -impl AsMut<[T]> for [T] { - fn as_mut(&mut self) -> &mut [T] { - self - } -} - -#[stable(feature = "rust1", since = "1.0.0")] -impl AsRef for str { - #[inline] - fn as_ref(&self) -> &str { - self - } -} diff --git a/src/libstd/ffi/c_str.rs b/src/libstd/ffi/c_str.rs index d1b8fcd744003..343ba7dd380b2 100644 --- a/src/libstd/ffi/c_str.rs +++ b/src/libstd/ffi/c_str.rs @@ -707,13 +707,6 @@ impl ops::Index for CString { } } -#[stable(feature = "cstring_asref", since = "1.7.0")] -impl AsRef for CStr { - fn as_ref(&self) -> &CStr { - self - } -} - #[stable(feature = "cstring_asref", since = "1.7.0")] impl AsRef for CString { fn as_ref(&self) -> &CStr { diff --git a/src/libstd/ffi/os_str.rs b/src/libstd/ffi/os_str.rs index 273b717f4678b..3d0e6c457dea9 100644 --- a/src/libstd/ffi/os_str.rs +++ b/src/libstd/ffi/os_str.rs @@ -575,13 +575,6 @@ impl ToOwned for OsStr { fn to_owned(&self) -> OsString { self.to_os_string() } } -#[stable(feature = "rust1", since = "1.0.0")] -impl AsRef for OsStr { - fn as_ref(&self) -> &OsStr { - self - } -} - #[stable(feature = "rust1", since = "1.0.0")] impl AsRef for OsString { fn as_ref(&self) -> &OsStr { diff --git a/src/libstd/path.rs b/src/libstd/path.rs index eb0a6cd74d7bc..92dda02f18588 100644 --- a/src/libstd/path.rs +++ b/src/libstd/path.rs @@ -2129,13 +2129,6 @@ impl cmp::Ord for Path { } } -#[stable(feature = "rust1", since = "1.0.0")] -impl AsRef for Path { - fn as_ref(&self) -> &Path { - self - } -} - #[stable(feature = "rust1", since = "1.0.0")] impl AsRef for OsStr { fn as_ref(&self) -> &Path {