Struct std::vec::Vec[src]
pub struct Vec<T> {
// some fields omitted
}An owned, growable vector.
Examples
fn main() { use std::vec::Vec; let mut vec = Vec::new(); vec.push(1i); vec.push(2i); assert_eq!(vec.len(), 2); assert_eq!(vec.get(0), &1); assert_eq!(vec.pop(), Some(2)); assert_eq!(vec.len(), 1); }let mut vec = Vec::new(); vec.push(1i); vec.push(2i); assert_eq!(vec.len(), 2); assert_eq!(vec.get(0), &1); assert_eq!(vec.pop(), Some(2)); assert_eq!(vec.len(), 1);
The vec! macro is provided to make initialization more convenient:
let mut vec = vec!(1i, 2i, 3i); vec.push(4); assert_eq!(vec, vec!(1, 2, 3, 4));
Methods
impl<T> Vec<T>
fn new<T>() -> Vec<T>
Constructs a new, empty Vec.
The vector will not allocate until elements are pushed onto it.
Example
fn main() { use std::vec::Vec; let mut vec: Vec<int> = Vec::new(); }let mut vec: Vec<int> = Vec::new();
fn with_capacity<T>(capacity: uint) -> Vec<T>
Constructs a new, empty Vec with the specified capacity.
The vector will be able to hold exactly capacity elements without
reallocating. If capacity is 0, the vector will not allocate.
Example
fn main() { use std::vec::Vec; let vec: Vec<int> = Vec::with_capacity(10); }let vec: Vec<int> = Vec::with_capacity(10);
fn from_fn<T>(length: uint, op: |uint| -> T) -> Vec<T>
Creates and initializes a Vec.
Creates a Vec of size length and initializes the elements to the
value returned by the closure op.
Example
fn main() { use std::vec::Vec; let vec = Vec::from_fn(3, |idx| idx * 2); assert_eq!(vec, vec!(0, 2, 4)); }let vec = Vec::from_fn(3, |idx| idx * 2); assert_eq!(vec, vec!(0, 2, 4));
unsafe fn from_raw_parts<T>(length: uint, capacity: uint, ptr: *mut T) -> Vec<T>
Create a Vec<T> directly from the raw constituents.
This is highly unsafe:
- if
ptris null, thenlengthandcapacityshould be 0 ptrmust point to an allocation of sizecapacity- there must be
lengthvalid instances of typeTat the beginning of that allocation ptrmust be allocated by the defaultVecallocator
fn partition<T>(self, f: |&T| -> bool) -> (Vec<T>, Vec<T>)
Consumes the Vec, partitioning it based on a predicate.
Partitions the Vec into two Vecs (A,B), where all elements of A
satisfy f and all elements of B do not. The order of elements is
preserved.
Example
fn main() { let vec = vec!(1i, 2i, 3i, 4i); let (even, odd) = vec.partition(|&n| n % 2 == 0); assert_eq!(even, vec!(2, 4)); assert_eq!(odd, vec!(1, 3)); }let vec = vec!(1i, 2i, 3i, 4i); let (even, odd) = vec.partition(|&n| n % 2 == 0); assert_eq!(even, vec!(2, 4)); assert_eq!(odd, vec!(1, 3));
impl<T: Clone> Vec<T>
fn append<T: Clone>(self, second: &[T]) -> Vec<T>
Iterates over the second vector, copying each element and appending it to
the first. Afterwards, the first is then returned for use again.
Example
fn main() { let vec = vec!(1i, 2i); let vec = vec.append([3i, 4i]); assert_eq!(vec, vec!(1, 2, 3, 4)); }let vec = vec!(1i, 2i); let vec = vec.append([3i, 4i]); assert_eq!(vec, vec!(1, 2, 3, 4));
fn from_slice<T: Clone>(values: &[T]) -> Vec<T>
Constructs a Vec by cloning elements of a slice.
Example
fn main() { use std::vec::Vec; let slice = [1i, 2, 3]; let vec = Vec::from_slice(slice); }let slice = [1i, 2, 3]; let vec = Vec::from_slice(slice);
fn from_elem<T: Clone>(length: uint, value: T) -> Vec<T>
Constructs a Vec with copies of a value.
Creates a Vec with length copies of value.
Example
fn main() { use std::vec::Vec; let vec = Vec::from_elem(3, "hi"); println!("{}", vec); // prints [hi, hi, hi] }let vec = Vec::from_elem(3, "hi"); println!("{}", vec); // prints [hi, hi, hi]
fn push_all<T: Clone>(&mut self, other: &[T])
Appends all elements in a slice to the Vec.
Iterates over the slice other, clones each element, and then appends
it to this Vec. The other vector is traversed in-order.
Example
fn main() { let mut vec = vec!(1i); vec.push_all([2i, 3, 4]); assert_eq!(vec, vec!(1, 2, 3, 4)); }let mut vec = vec!(1i); vec.push_all([2i, 3, 4]); assert_eq!(vec, vec!(1, 2, 3, 4));
fn grow<T: Clone>(&mut self, n: uint, value: &T)
Grows the Vec in-place.
Adds n copies of value to the Vec.
Example
fn main() { let mut vec = vec!("hello"); vec.grow(2, &("world")); assert_eq!(vec, vec!("hello", "world", "world")); }let mut vec = vec!("hello"); vec.grow(2, &("world")); assert_eq!(vec, vec!("hello", "world", "world"));
fn grow_set<T: Clone>(&mut self, index: uint, initval: &T, value: T)
Sets the value of a vector element at a given index, growing the vector as needed.
Sets the element at position index to value. If index is past the
end of the vector, expands the vector by replicating initval to fill
the intervening space.
Example
fn main() { let mut vec = vec!("a", "b", "c"); vec.grow_set(1, &("fill"), "d"); vec.grow_set(4, &("fill"), "e"); assert_eq!(vec, vec!("a", "d", "c", "fill", "e")); }let mut vec = vec!("a", "b", "c"); vec.grow_set(1, &("fill"), "d"); vec.grow_set(4, &("fill"), "e"); assert_eq!(vec, vec!("a", "d", "c", "fill", "e"));
fn partitioned<T: Clone>(&self, f: |&T| -> bool) -> (Vec<T>, Vec<T>)
Partitions a vector based on a predicate.
Clones the elements of the vector, partitioning them into two Vecs
(A,B), where all elements of A satisfy f and all elements of B
do not. The order of elements is preserved.
Example
fn main() { let vec = vec!(1i, 2, 3, 4); let (even, odd) = vec.partitioned(|&n| n % 2 == 0); assert_eq!(even, vec!(2i, 4)); assert_eq!(odd, vec!(1i, 3)); }let vec = vec!(1i, 2, 3, 4); let (even, odd) = vec.partitioned(|&n| n % 2 == 0); assert_eq!(even, vec!(2i, 4)); assert_eq!(odd, vec!(1i, 3));
impl<T> Vec<T>
fn capacity<T>(&self) -> uint
Returns the number of elements the vector can hold without reallocating.
Example
fn main() { use std::vec::Vec; let vec: Vec<int> = Vec::with_capacity(10); assert_eq!(vec.capacity(), 10); }let vec: Vec<int> = Vec::with_capacity(10); assert_eq!(vec.capacity(), 10);
fn reserve_additional<T>(&mut self, extra: uint)
Reserves capacity for at least n additional elements in the given
vector.
Failure
Fails if the new capacity overflows uint.
Example
fn main() { use std::vec::Vec; let mut vec: Vec<int> = vec!(1i); vec.reserve_additional(10); assert!(vec.capacity() >= 11); }let mut vec: Vec<int> = vec!(1i); vec.reserve_additional(10); assert!(vec.capacity() >= 11);
fn reserve<T>(&mut self, capacity: uint)
Reserves capacity for at least n elements in the given vector.
This function will over-allocate in order to amortize the allocation costs in scenarios where the caller may need to repeatedly reserve additional space.
If the capacity for self is already equal to or greater than the
requested capacity, then no action is taken.
Example
fn main() { let mut vec = vec!(1i, 2, 3); vec.reserve(10); assert!(vec.capacity() >= 10); }let mut vec = vec!(1i, 2, 3); vec.reserve(10); assert!(vec.capacity() >= 10);
fn reserve_exact<T>(&mut self, capacity: uint)
Reserves capacity for exactly capacity elements in the given vector.
If the capacity for self is already equal to or greater than the
requested capacity, then no action is taken.
Example
fn main() { use std::vec::Vec; let mut vec: Vec<int> = Vec::with_capacity(10); vec.reserve_exact(11); assert_eq!(vec.capacity(), 11); }let mut vec: Vec<int> = Vec::with_capacity(10); vec.reserve_exact(11); assert_eq!(vec.capacity(), 11);
fn shrink_to_fit<T>(&mut self)
Shrink the capacity of the vector as much as possible
Example
fn main() { let mut vec = vec!(1i, 2, 3); vec.shrink_to_fit(); }let mut vec = vec!(1i, 2, 3); vec.shrink_to_fit();
fn pop<T>(&mut self) -> Option<T>
Remove the last element from a vector and return it, or None if it is
empty.
Example
fn main() { let mut vec = vec!(1i, 2, 3); assert_eq!(vec.pop(), Some(3)); assert_eq!(vec, vec!(1, 2)); }let mut vec = vec!(1i, 2, 3); assert_eq!(vec.pop(), Some(3)); assert_eq!(vec, vec!(1, 2));
fn push<T>(&mut self, value: T)
Append an element to a vector.
Failure
Fails if the number of elements in the vector overflows a uint.
Example
fn main() { let mut vec = vec!(1i, 2); vec.push(3); assert_eq!(vec, vec!(1, 2, 3)); }let mut vec = vec!(1i, 2); vec.push(3); assert_eq!(vec, vec!(1, 2, 3));
fn append_one<T>(self, x: T) -> Vec<T>
Appends one element to the vector provided. The vector itself is then returned for use again.
Example
fn main() { let vec = vec!(1i, 2); let vec = vec.append_one(3); assert_eq!(vec, vec!(1, 2, 3)); }let vec = vec!(1i, 2); let vec = vec.append_one(3); assert_eq!(vec, vec!(1, 2, 3));
fn truncate<T>(&mut self, len: uint)
Shorten a vector, dropping excess elements.
If len is greater than the vector's current length, this has no
effect.
Example
fn main() { let mut vec = vec!(1i, 2, 3, 4); vec.truncate(2); assert_eq!(vec, vec!(1, 2)); }let mut vec = vec!(1i, 2, 3, 4); vec.truncate(2); assert_eq!(vec, vec!(1, 2));
fn as_mut_slice<T>(&'a mut self) -> &'a mut [T]
Work with self as a mutable slice.
Example
fn main() { fn foo(slice: &mut [int]) {} let mut vec = vec!(1i, 2); foo(vec.as_mut_slice()); }fn foo(slice: &mut [int]) {} let mut vec = vec!(1i, 2); foo(vec.as_mut_slice());
fn move_iter<T>(self) -> MoveItems<T>
Creates a consuming iterator, that is, one that moves each value out of the vector (from start to end). The vector cannot be used after calling this.
Example
fn main() { let v = vec!("a".to_string(), "b".to_string()); for s in v.move_iter() { // s has type String, not &String println!("{}", s); } }let v = vec!("a".to_string(), "b".to_string()); for s in v.move_iter() { // s has type String, not &String println!("{}", s); }
unsafe fn set_len<T>(&mut self, len: uint)
Sets the length of a vector.
This will explicitly set the size of the vector, without actually modifying its buffers, so it is up to the caller to ensure that the vector is actually the specified size.
fn get<T>(&'a self, index: uint) -> &'a T
Returns a reference to the value at index index.
Failure
Fails if index is out of bounds
Example
fn main() { let vec = vec!(1i, 2, 3); assert!(vec.get(1) == &2); }let vec = vec!(1i, 2, 3); assert!(vec.get(1) == &2);
fn get_mut<T>(&'a mut self, index: uint) -> &'a mut T
Returns a mutable reference to the value at index index.
Failure
Fails if index is out of bounds
Example
fn main() { let mut vec = vec!(1i, 2, 3); *vec.get_mut(1) = 4; assert_eq!(vec, vec!(1i, 4, 3)); }let mut vec = vec!(1i, 2, 3); *vec.get_mut(1) = 4; assert_eq!(vec, vec!(1i, 4, 3));
fn iter<T>(&'a self) -> Items<'a, T>
Returns an iterator over references to the elements of the vector in order.
Example
fn main() { let vec = vec!(1i, 2, 3); for num in vec.iter() { println!("{}", *num); } }let vec = vec!(1i, 2, 3); for num in vec.iter() { println!("{}", *num); }
fn mut_iter<T>(&'a mut self) -> MutItems<'a, T>
Returns an iterator over mutable references to the elements of the vector in order.
Example
fn main() { let mut vec = vec!(1i, 2, 3); for num in vec.mut_iter() { *num = 0; } }let mut vec = vec!(1i, 2, 3); for num in vec.mut_iter() { *num = 0; }
fn sort_by<T>(&mut self, compare: |&T, &T| -> Ordering)
Sort the vector, in place, using compare to compare elements.
This sort is O(n log n) worst-case and stable, but allocates
approximately 2 * n, where n is the length of self.
Example
fn main() { let mut v = vec!(5i, 4, 1, 3, 2); v.sort_by(|a, b| a.cmp(b)); assert_eq!(v, vec!(1i, 2, 3, 4, 5)); // reverse sorting v.sort_by(|a, b| b.cmp(a)); assert_eq!(v, vec!(5i, 4, 3, 2, 1)); }let mut v = vec!(5i, 4, 1, 3, 2); v.sort_by(|a, b| a.cmp(b)); assert_eq!(v, vec!(1i, 2, 3, 4, 5)); // reverse sorting v.sort_by(|a, b| b.cmp(a)); assert_eq!(v, vec!(5i, 4, 3, 2, 1));
fn slice<T>(&'a self, start: uint, end: uint) -> &'a [T]
Returns a slice of self spanning the interval [start, end).
Failure
Fails when the slice (or part of it) is outside the bounds of self, or when
start > end.
Example
fn main() { let vec = vec!(1i, 2, 3, 4); assert!(vec.slice(0, 2) == [1, 2]); }let vec = vec!(1i, 2, 3, 4); assert!(vec.slice(0, 2) == [1, 2]);
fn tail<T>(&'a self) -> &'a [T]
Returns a slice containing all but the first element of the vector.
Failure
Fails when the vector is empty.
Example
fn main() { let vec = vec!(1i, 2, 3); assert!(vec.tail() == [2, 3]); }let vec = vec!(1i, 2, 3); assert!(vec.tail() == [2, 3]);
fn tailn<T>(&'a self, n: uint) -> &'a [T]
Returns all but the first `n' elements of a vector.
Failure
Fails when there are fewer than n elements in the vector.
Example
fn main() { let vec = vec!(1i, 2, 3, 4); assert!(vec.tailn(2) == [3, 4]); }let vec = vec!(1i, 2, 3, 4); assert!(vec.tailn(2) == [3, 4]);
fn last<T>(&'a self) -> Option<&'a T>
Returns a reference to the last element of a vector, or None if it is
empty.
Example
fn main() { let vec = vec!(1i, 2, 3); assert!(vec.last() == Some(&3)); }let vec = vec!(1i, 2, 3); assert!(vec.last() == Some(&3));
fn mut_last<T>(&'a mut self) -> Option<&'a mut T>
Returns a mutable reference to the last element of a vector, or None
if it is empty.
Example
fn main() { let mut vec = vec!(1i, 2, 3); *vec.mut_last().unwrap() = 4; assert_eq!(vec, vec!(1i, 2, 4)); }let mut vec = vec!(1i, 2, 3); *vec.mut_last().unwrap() = 4; assert_eq!(vec, vec!(1i, 2, 4));
fn swap_remove<T>(&mut self, index: uint) -> Option<T>
Remove an element from anywhere in the vector and return it, replacing it with the last element. This does not preserve ordering, but is O(1).
Returns None if index is out of bounds.
Example
fn main() { let mut v = vec!("foo".to_string(), "bar".to_string(), "baz".to_string(), "qux".to_string()); assert_eq!(v.swap_remove(1), Some("bar".to_string())); assert_eq!(v, vec!("foo".to_string(), "qux".to_string(), "baz".to_string())); assert_eq!(v.swap_remove(0), Some("foo".to_string())); assert_eq!(v, vec!("baz".to_string(), "qux".to_string())); assert_eq!(v.swap_remove(2), None); }let mut v = vec!("foo".to_string(), "bar".to_string(), "baz".to_string(), "qux".to_string()); assert_eq!(v.swap_remove(1), Some("bar".to_string())); assert_eq!(v, vec!("foo".to_string(), "qux".to_string(), "baz".to_string())); assert_eq!(v.swap_remove(0), Some("foo".to_string())); assert_eq!(v, vec!("baz".to_string(), "qux".to_string())); assert_eq!(v.swap_remove(2), None);
fn unshift<T>(&mut self, element: T)
Prepend an element to the vector.
Warning
This is an O(n) operation as it requires copying every element in the vector.
Example
fn main() { let mut vec = vec!(1i, 2, 3); vec.unshift(4); assert_eq!(vec, vec!(4, 1, 2, 3)); }let mut vec = vec!(1i, 2, 3); vec.unshift(4); assert_eq!(vec, vec!(4, 1, 2, 3));
fn shift<T>(&mut self) -> Option<T>
Removes the first element from a vector and returns it, or None if
the vector is empty.
Warning
This is an O(n) operation as it requires copying every element in the vector.
Example
fn main() { let mut vec = vec!(1i, 2, 3); assert!(vec.shift() == Some(1)); assert_eq!(vec, vec!(2, 3)); }let mut vec = vec!(1i, 2, 3); assert!(vec.shift() == Some(1)); assert_eq!(vec, vec!(2, 3));
fn insert<T>(&mut self, index: uint, element: T)
Insert an element at position index within the vector, shifting all
elements after position i one position to the right.
Failure
Fails if index is out of bounds of the vector.
Example
fn main() { let mut vec = vec!(1i, 2, 3); vec.insert(1, 4); assert_eq!(vec, vec!(1, 4, 2, 3)); }let mut vec = vec!(1i, 2, 3); vec.insert(1, 4); assert_eq!(vec, vec!(1, 4, 2, 3));
fn remove<T>(&mut self, index: uint) -> Option<T>
Remove and return the element at position index within the vector,
shifting all elements after position index one position to the left.
Returns None if i is out of bounds.
Example
fn main() { let mut v = vec!(1i, 2, 3); assert_eq!(v.remove(1), Some(2)); assert_eq!(v, vec!(1, 3)); assert_eq!(v.remove(4), None); // v is unchanged: assert_eq!(v, vec!(1, 3)); }let mut v = vec!(1i, 2, 3); assert_eq!(v.remove(1), Some(2)); assert_eq!(v, vec!(1, 3)); assert_eq!(v.remove(4), None); // v is unchanged: assert_eq!(v, vec!(1, 3));
fn push_all_move<T>(&mut self, other: Vec<T>)
Takes ownership of the vector other, moving all elements into
the current vector. This does not copy any elements, and it is
illegal to use the other vector after calling this method
(because it is moved here).
Example
fn main() { let mut vec = vec!(box 1i); vec.push_all_move(vec!(box 2, box 3, box 4)); assert_eq!(vec, vec!(box 1, box 2, box 3, box 4)); }let mut vec = vec!(box 1i); vec.push_all_move(vec!(box 2, box 3, box 4)); assert_eq!(vec, vec!(box 1, box 2, box 3, box 4));
fn mut_slice<T>(&'a mut self, start: uint, end: uint) -> &'a mut [T]
Returns a mutable slice of self between start and end.
Failure
Fails when start or end point outside the bounds of self, or when
start > end.
Example
fn main() { let mut vec = vec!(1i, 2, 3, 4); assert!(vec.mut_slice(0, 2) == [1, 2]); }let mut vec = vec!(1i, 2, 3, 4); assert!(vec.mut_slice(0, 2) == [1, 2]);
fn mut_slice_from<T>(&'a mut self, start: uint) -> &'a mut [T]
Returns a mutable slice of self from start to the end of the vec.
Failure
Fails when start points outside the bounds of self.
Example
fn main() { let mut vec = vec!(1i, 2, 3, 4); assert!(vec.mut_slice_from(2) == [3, 4]); }let mut vec = vec!(1i, 2, 3, 4); assert!(vec.mut_slice_from(2) == [3, 4]);
fn mut_slice_to<T>(&'a mut self, end: uint) -> &'a mut [T]
Returns a mutable slice of self from the start of the vec to end.
Failure
Fails when end points outside the bounds of self.
Example
fn main() { let mut vec = vec!(1i, 2, 3, 4); assert!(vec.mut_slice_to(2) == [1, 2]); }let mut vec = vec!(1i, 2, 3, 4); assert!(vec.mut_slice_to(2) == [1, 2]);
fn mut_split_at<T>(&'a mut self, mid: uint) -> (&'a mut [T], &'a mut [T])
Returns a pair of mutable slices that divides the vec at an index.
The first will contain all indices from [0, mid) (excluding
the index mid itself) and the second will contain all
indices from [mid, len) (excluding the index len itself).
Failure
Fails if mid > len.
Example
fn main() { let mut vec = vec!(1i, 2, 3, 4, 5, 6); // scoped to restrict the lifetime of the borrows { let (left, right) = vec.mut_split_at(0); assert!(left == &mut []); assert!(right == &mut [1, 2, 3, 4, 5, 6]); } { let (left, right) = vec.mut_split_at(2); assert!(left == &mut [1, 2]); assert!(right == &mut [3, 4, 5, 6]); } { let (left, right) = vec.mut_split_at(6); assert!(left == &mut [1, 2, 3, 4, 5, 6]); assert!(right == &mut []); } }let mut vec = vec!(1i, 2, 3, 4, 5, 6); // scoped to restrict the lifetime of the borrows { let (left, right) = vec.mut_split_at(0); assert!(left == &mut []); assert!(right == &mut [1, 2, 3, 4, 5, 6]); } { let (left, right) = vec.mut_split_at(2); assert!(left == &mut [1, 2]); assert!(right == &mut [3, 4, 5, 6]); } { let (left, right) = vec.mut_split_at(6); assert!(left == &mut [1, 2, 3, 4, 5, 6]); assert!(right == &mut []); }
fn reverse<T>(&mut self)
Reverse the order of elements in a vector, in place.
Example
fn main() { let mut v = vec!(1i, 2, 3); v.reverse(); assert_eq!(v, vec!(3i, 2, 1)); }let mut v = vec!(1i, 2, 3); v.reverse(); assert_eq!(v, vec!(3i, 2, 1));
fn slice_from<T>(&'a self, start: uint) -> &'a [T]
Returns a slice of self from start to the end of the vec.
Failure
Fails when start points outside the bounds of self.
Example
fn main() { let vec = vec!(1i, 2, 3); assert!(vec.slice_from(1) == [2, 3]); }let vec = vec!(1i, 2, 3); assert!(vec.slice_from(1) == [2, 3]);
fn slice_to<T>(&'a self, end: uint) -> &'a [T]
Returns a slice of self from the start of the vec to end.
Failure
Fails when end points outside the bounds of self.
Example
fn main() { let vec = vec!(1i, 2, 3); assert!(vec.slice_to(2) == [1, 2]); }let vec = vec!(1i, 2, 3); assert!(vec.slice_to(2) == [1, 2]);
fn init<T>(&'a self) -> &'a [T]
Returns a slice containing all but the last element of the vector.
Failure
Fails if the vector is empty
fn as_ptr<T>(&self) -> *T
Returns an unsafe pointer to the vector's buffer.
The caller must ensure that the vector outlives the pointer this function returns, or else it will end up pointing to garbage.
Modifying the vector may cause its buffer to be reallocated, which would also make any pointers to it invalid.
fn as_mut_ptr<T>(&mut self) -> *mut T
Returns a mutable unsafe pointer to the vector's buffer.
The caller must ensure that the vector outlives the pointer this function returns, or else it will end up pointing to garbage.
Modifying the vector may cause its buffer to be reallocated, which would also make any pointers to it invalid.
fn retain<T>(&mut self, f: |&T| -> bool)
Retains only the elements specified by the predicate.
In other words, remove all elements e such that f(&e) returns false.
This method operates in place and preserves the order the retained elements.
Example
fn main() { let mut vec = vec!(1i, 2, 3, 4); vec.retain(|x| x%2 == 0); assert_eq!(vec, vec!(2, 4)); }let mut vec = vec!(1i, 2, 3, 4); vec.retain(|x| x%2 == 0); assert_eq!(vec, vec!(2, 4));
fn grow_fn<T>(&mut self, n: uint, f: |uint| -> T)
Expands a vector in place, initializing the new elements to the result of a function.
The vector is grown by n elements. The i-th new element are initialized to the value
returned by f(i) where i is in the range [0, n).
Example
fn main() { let mut vec = vec!(0u, 1); vec.grow_fn(3, |i| i); assert_eq!(vec, vec!(0, 1, 0, 1, 2)); }let mut vec = vec!(0u, 1); vec.grow_fn(3, |i| i); assert_eq!(vec, vec!(0, 1, 0, 1, 2));
impl<T: Ord> Vec<T>
fn sort<T: Ord>(&mut self)
Sorts the vector in place.
This sort is O(n log n) worst-case and stable, but allocates
approximately 2 * n, where n is the length of self.
Example
fn main() { let mut vec = vec!(3i, 1, 2); vec.sort(); assert_eq!(vec, vec!(1, 2, 3)); }let mut vec = vec!(3i, 1, 2); vec.sort(); assert_eq!(vec, vec!(1, 2, 3));
impl<T: PartialEq> Vec<T>
fn contains<T: PartialEq>(&self, x: &T) -> bool
Return true if a vector contains an element with the given value
Example
fn main() { let vec = vec!(1i, 2, 3); assert!(vec.contains(&1)); }let vec = vec!(1i, 2, 3); assert!(vec.contains(&1));
fn dedup<T: PartialEq>(&mut self)
Remove consecutive repeated elements in the vector.
If the vector is sorted, this removes all duplicates.
Example
fn main() { let mut vec = vec!(1i, 2, 2, 3, 2); vec.dedup(); assert_eq!(vec, vec!(1i, 2, 3, 2)); }let mut vec = vec!(1i, 2, 2, 3, 2); vec.dedup(); assert_eq!(vec, vec!(1i, 2, 3, 2));
Trait Implementations
impl OwnedAsciiCast for Vec<u8>
fn is_ascii(&self) -> bool
unsafe fn into_ascii_nocheck(self) -> Vec<Ascii>
fn into_ascii(self) -> Vec<Ascii>
fn into_ascii_opt(self) -> Option<Vec<Ascii>>
impl IntoStr for Vec<Ascii>
impl IntoBytes for Vec<Ascii>
fn into_bytes(self) -> Vec<u8>
impl<'a, S: Str> StrVector for Vec<S>
impl<T: Clone> Clone for Vec<T>
fn clone<T: Clone>(&self) -> Vec<T>
fn clone_from<T: Clone>(&mut self, other: &Vec<T>)
fn clone_from<T: Clone>(&mut self, &Vec<T>)
impl<T> FromIterator<T> for Vec<T>
impl<T> Extendable<T> for Vec<T>
impl<T: PartialEq> PartialEq for Vec<T>
impl<T: PartialOrd> PartialOrd for Vec<T>
fn lt<T: PartialOrd>(&self, other: &Vec<T>) -> bool
fn le<T: PartialOrd>(&self, &Vec<T>) -> bool
fn gt<T: PartialOrd>(&self, &Vec<T>) -> bool
fn ge<T: PartialOrd>(&self, &Vec<T>) -> bool
impl<T: Eq> Eq for Vec<T>
fn assert_receiver_is_total_eq<T: Eq>(&self)
impl<T: PartialEq, V: Vector<T>> Equiv<V> for Vec<T>
impl<T: Ord> Ord for Vec<T>
impl<T> Collection for Vec<T>
impl<T: Clone> CloneableVector<T> for Vec<T>
impl<T> Mutable for Vec<T>
fn clear<T>(&mut self)
impl<T> Vector<T> for Vec<T>
fn as_slice<T>(&'a self) -> &'a [T]
Work with self as a slice.
Example
fn main() { fn foo(slice: &[int]) {} let vec = vec!(1i, 2); foo(vec.as_slice()); }fn foo(slice: &[int]) {} let vec = vec!(1i, 2); foo(vec.as_slice());