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(&v: [const T]) -> T { ret e; } +#[doc = "Prepend an element to a vector"] +fn unshift(&v: [const T], +t: T) { + v = [const t] + v; +} + #[doc = "Remove the last element from a vector and return it"] fn pop(&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: