diff --git a/src/lib.rs b/src/lib.rs index 47acf336..bcfdc62d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -92,9 +92,7 @@ #![deny(missing_docs)] #![deny(warnings)] #![feature(const_fn)] -#![feature(const_unsafe_cell_new)] #![feature(core_intrinsics)] -#![feature(shared)] #![feature(unsize)] #![no_std] diff --git a/src/string.rs b/src/string.rs index d0cd07ee..f1cf88c9 100644 --- a/src/string.rs +++ b/src/string.rs @@ -426,6 +426,26 @@ where } } +impl AsRef for String +where + A: Unsize<[u8]>, +{ + #[inline] + fn as_ref(&self) -> &str { + self + } +} + +impl AsRef<[u8]> for String +where + A: Unsize<[u8]>, +{ + #[inline] + fn as_ref(&self) -> &[u8] { + self.as_bytes() + } +} + impl PartialEq> for String where A: Unsize<[u8]>, diff --git a/src/vec.rs b/src/vec.rs index 8dd4266e..79e387db 100644 --- a/src/vec.rs +++ b/src/vec.rs @@ -243,6 +243,46 @@ where } } +impl AsRef> for Vec +where + A: Unsize<[T]>, +{ + #[inline] + fn as_ref(&self) -> &Vec { + self + } +} + +impl AsMut> for Vec +where + A: Unsize<[T]>, +{ + #[inline] + fn as_mut(&mut self) -> &mut Vec { + self + } +} + +impl AsRef<[T]> for Vec +where + A: Unsize<[T]>, +{ + #[inline] + fn as_ref(&self) -> &[T] { + self + } +} + +impl AsMut<[T]> for Vec +where + A: Unsize<[T]>, +{ + #[inline] + fn as_mut(&mut self) -> &mut [T] { + self + } +} + #[cfg(test)] mod tests { use Vec;