about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-03-18 16:16:47 -0700
committerBrian Anderson <banderson@mozilla.com>2012-03-18 16:16:47 -0700
commite4af1ca0657d2b3b4fc2e7829cd8f822d983de1b (patch)
tree42bd60cf92d138d9490d54b75e49fe103f28360a
parent397f33fd35558fd0c390ae29839ecbaf7ce456f9 (diff)
downloadrust-e4af1ca0657d2b3b4fc2e7829cd8f822d983de1b.tar.gz
rust-e4af1ca0657d2b3b4fc2e7829cd8f822d983de1b.zip
core: Add vec::unshift
-rw-r--r--src/libcore/vec.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libcore/vec.rs b/src/libcore/vec.rs
index 8b570a14bb9..1fe3ac22ceb 100644
--- a/src/libcore/vec.rs
+++ b/src/libcore/vec.rs
@@ -323,6 +323,11 @@ fn shift<T: copy>(&v: [const T]) -> T {
     ret e;
 }
 
+#[doc = "Prepend an element to a vector"]
+fn unshift<T: copy>(&v: [const T], +t: T) {
+    v = [const t] + v;
+}
+
 #[doc = "Remove the last element from a vector and return it"]
 fn pop<T>(&v: [const T]) -> T unsafe {
     let ln = len(v);
@@ -1734,6 +1739,13 @@ mod tests {
         let addr_imm = unsafe::to_ptr(x_imm);
         assert addr == addr_imm;
     }
+
+    #[test]
+    fn test_unshift() {
+        let x = [1, 2, 3];
+        unshift(x, 0);
+        assert x == [0, 1, 2, 3];
+    }
 }
 
 // Local Variables: