Vectors
A vector is a similar collection type provided by the standard library that is allowed to grow or shrink in size.
Vectors are implemented using generics.
More often, you’ll create a
Vec<T>with initial values and Rust will infer the type of value you want to store, so you rarely need to do type annotation.
vecs1.rs
fn array_and_vec() -> ([i32; 4], Vec<i32>) {
let a = [10, 20, 30, 40]; // Array
// Create a vector called `v` which contains the exact same elements as in the array `a`.
// Use the vector macro.
// let v = ???;
let v = vec![10, 20, 30, 40];
(a, v)
}
fn main() {
// You can optionally experiment here.
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_array_and_vec_similarity() {
let (a, v) = array_and_vec();
assert_eq!(a, *v);
}
}Rust conveniently provides the
vec!macro, which will create a new vector that holds the values you give it.You can specify the vector types the type within angle brackets like
Vec<i32>.More often, you’ll create a vector with initial values and Rust will infer the type of value you want to store, so you rarely need to do this type annotation.
In this exercise we just need to init new vector using
vec!macro.
vecs2.rs
In this exercise we have 2 task:
First is to iterate through a collection manually using
forand multiply each element with2.Multiple
elementby2.Then push it into
outputvariable.You can read more about it in Looping Through a Collection with for.
Second is to iterate through a collection using iterators and multiply each element with
2.Calling
iter()to a collection will returnItertype.Then calling
map()to produces a new iterator which calls given closure on each element of the original iterator. Ref: trait.iterator method.map.collect()can take anything iterable, and turn it into a relevant collection.You can read more about iterators in here: Iteration and the trait here" Iterator Trait.
Last updated