Native lesson simulator
Stack operations
Push, pop, and peek at the top item.
A stack is LIFO: the newest item is the first one removed.
Flash cards
Review the key moves
What is the main idea behind Rust Vectors?
Lesson checks
Practice each idea before moving on
Short Mimo-style checks built from this lesson's code, terms, and sequence.
Which statement best captures the main point of this lesson?
Complete the missing token from the example code.
___ fruits = vec!["apple", "banana", "orange"];Put the learning moves in the order that makes the concept easiest to apply.
Vectors
A vector is a resizable array. Unlike regular arrays, vectors can grow or shrink in size.
Creating a Vector
To create a vector, use the vec! macro:
Example
let fruits = vec!["apple", "banana", "orange"];This creates a vector with three string elements.
Access Vector Elements
You can access values in a vector using index numbers (just like arrays):
Example
let fruits = vec!["apple", "banana", "orange"];
println!("First fruit: {}", fruits[0]);Change Vector Values
To change a value in the vector, refer to the index number and assign a new value.
Remember to make the vector mutable (using the mut keyword):
Example
let mut fruits = vec!["apple", "banana", "orange"];
fruits[0] = "grape";
println!("New first fruit: {}", fruits[0]);Add Elements to a Vector
You can add a new element to the end of a vector using the push() method:
Example
let mut fruits = vec!["apple", "banana"];
fruits.push("cherry");
println!("{:?}", fruits); // ["apple", "banana", "cherry"]Remove Elements from a Vector
To remove the last element from a vector, use pop() :
Example
let mut fruits = vec!["apple", "banana", "cherry"];
fruits.pop();
println!("{:?}", fruits); // ["apple", "banana"]Add or Remove Elements at a Specified Index
Rust vectors are designed to grow and shrink at the end , but you can also add or remove elements at the beginning or at a specified index .
Use insert() to add an item at a specified index:
Example
let mut fruits = vec!["banana", "orange"];
fruits.insert(0, "apple");
println!("{:?}", fruits); // ["apple", "banana", "orange"]Example
let mut fruits = vec!["banana", "orange"];
fruits.insert(1, "apple");
println!("{:?}", fruits); // ["banana", "apple", "orange"]Use remove() to remove an element from a specified index:
Example
let mut fruits = vec!["apple", "banana", "orange"];
fruits.remove(0);
println!("{:?}", fruits); // ["banana", "orange"]Note
Adding or removing elements from the beginning is slower than at the end, because all the other elements have to shift positions.
Vector Length
You can find out how many elements there are in a vector using the .len() method:
Example
let fruits = vec!["apple", "banana", "cherry"];
println!("There are {} fruits.", fruits.len());Loop Through a Vector
Just like arrays, you can use a for loop to go through all the values in a vector:
Example
let fruits = vec!["apple", "banana", "orange"];
for fruit in &fruits {
println!("I like {}.", fruit);
}Note
Use &fruits to borrow the vector instead of moving it.
In Rust, borrowing means using a reference to a value instead of taking ownership of it. When you loop through a vector without & , the values are moved out, and you can no longer use the vector. But when you borrow the vector using & , you can still use it later in your program.
You can learn more about ownership in our chapters on Ownership and Borrowing and References .