diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2014-03-06 10:22:21 -0800 |
|---|---|---|
| committer | Huon Wilson <dbau.pp+github@gmail.com> | 2014-03-21 23:37:21 +1100 |
| commit | 0b714b4ba6411c6997324d442a3df602e5920ff5 (patch) | |
| tree | 0b63b92fbc006baa3037c760cfa50fc89f722ee9 /src/libstd | |
| parent | caf17fea06bdf3d1540aded41a161f04a8c5a2c9 (diff) | |
| download | rust-0b714b4ba6411c6997324d442a3df602e5920ff5.tar.gz rust-0b714b4ba6411c6997324d442a3df602e5920ff5.zip | |
libstd: Add some methods to `Vec<T>`.
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/rt/local_heap.rs | 2 | ||||
| -rw-r--r-- | src/libstd/str.rs | 1 | ||||
| -rw-r--r-- | src/libstd/vec.rs | 36 |
3 files changed, 21 insertions, 18 deletions
diff --git a/src/libstd/rt/local_heap.rs b/src/libstd/rt/local_heap.rs index a682a6141b1..1b643e8dab2 100644 --- a/src/libstd/rt/local_heap.rs +++ b/src/libstd/rt/local_heap.rs @@ -21,7 +21,7 @@ use rt::global_heap; use rt::local::Local; use rt::task::Task; use raw; -use slice::ImmutableVector; +use slice::{ImmutableVector, Vector}; use vec::Vec; // This has no meaning with out rtdebug also turned on. diff --git a/src/libstd/str.rs b/src/libstd/str.rs index 37aad3f9411..0cd5e647831 100644 --- a/src/libstd/str.rs +++ b/src/libstd/str.rs @@ -101,6 +101,7 @@ use ptr::RawPtr; use from_str::FromStr; use slice; use slice::{OwnedVector, OwnedCloneableVector, ImmutableVector, MutableVector}; +use slice::{Vector}; use vec::Vec; use default::Default; use raw::Repr; diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs index 5f4f4960a93..47eb275823a 100644 --- a/src/libstd/vec.rs +++ b/src/libstd/vec.rs @@ -28,7 +28,7 @@ use ptr; use rt::global_heap::{malloc_raw, realloc_raw}; use raw::Slice; use slice::{ImmutableEqVector, ImmutableVector, Items, MutItems, MutableVector}; -use slice::{MutableTotalOrdVector}; +use slice::{MutableTotalOrdVector, Vector}; /// An owned, growable vector. /// @@ -534,22 +534,6 @@ impl<T> Vec<T> { self.len = len; } - /// Work with `self` as a slice. - /// - /// # Example - /// - /// ```rust - /// fn foo(slice: &[int]) {} - /// - /// let vec = vec!(1, 2); - /// foo(vec.as_slice()); - /// ``` - #[inline] - pub fn as_slice<'a>(&'a self) -> &'a [T] { - let slice = Slice { data: self.ptr as *T, len: self.len }; - unsafe { transmute(slice) } - } - /// Work with `self` as a mutable slice. /// /// # Example @@ -1172,6 +1156,24 @@ impl<T:Eq> Vec<T> { } } +impl<T> Vector<T> for Vec<T> { + /// Work with `self` as a slice. + /// + /// # Example + /// + /// ```rust + /// fn foo(slice: &[int]) {} + /// + /// let vec = vec!(1, 2); + /// foo(vec.as_slice()); + /// ``` + #[inline] + fn as_slice<'a>(&'a self) -> &'a [T] { + let slice = Slice { data: self.ptr as *T, len: self.len }; + unsafe { transmute(slice) } + } +} + /// Iterates over the `second` vector, copying each element and appending it to /// the `first`. Afterwards, the `first` is then returned for use again. /// |
