bugl
bugl
HomeLearnPatternsPathsSearch
HomeLearnPatternsPathsSearch

Loading lesson path

Learn/Rust/Rust Data Structures
Rust•Rust Data Structures

Rust Vectors

Native lesson simulator

Stack operations

Push, pop, and peek at the top item.

LIFO: last in, first outABC← top

A stack is LIFO: the newest item is the first one removed.

Flash cards

Review the key moves

1/4
Core idea

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.

1Quick choice

Which statement best captures the main point of this lesson?

2Fill blank

Complete the missing token from the example code.

___ fruits = vec!["apple", "banana", "orange"];
3Order

Put the learning moves in the order that makes the concept easiest to apply.

Add Elements to a Vector
Change Vector Values
Access Vector Elements

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 .

Previous

Rust Arrays

Next

Rust Tuples