about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2014-03-06 10:22:21 -0800
committerHuon Wilson <dbau.pp+github@gmail.com>2014-03-21 23:37:21 +1100
commit0b714b4ba6411c6997324d442a3df602e5920ff5 (patch)
tree0b63b92fbc006baa3037c760cfa50fc89f722ee9 /src/libstd
parentcaf17fea06bdf3d1540aded41a161f04a8c5a2c9 (diff)
downloadrust-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.rs2
-rw-r--r--src/libstd/str.rs1
-rw-r--r--src/libstd/vec.rs36
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.
 ///