📖 Scenario: You are organizing a small grocery list for your weekly shopping. You want to keep track of the items you need to buy using a list.
🎯 Goal: Create a vector in Rust to store grocery items, add a few items, and then display the list.
📋 What You'll Learn
Create a vector called grocery_list with the items: "Milk", "Eggs", and "Bread"
Add the item "Butter" to the grocery_list
Print each item in grocery_list on its own line
💡 Why This Matters
🌍 Real World
Vectors are used to store lists of things like shopping items, tasks, or any group of related data.
💼 Career
Knowing how to create and manage vectors is essential for Rust programming jobs, especially when handling collections of data.
Progress0 / 4 steps
1
Create the initial vector
Create a vector called grocery_list with the items "Milk", "Eggs", and "Bread" using vec! macro.
Rust
Hint
Use let mut grocery_list = vec!["Milk", "Eggs", "Bread"]; to create a mutable vector with the items.
2
Add an item to the vector
Add the item "Butter" to the vector grocery_list using the push method.
Rust
Hint
Use grocery_list.push("Butter"); to add the new item.
3
Print each item in the vector
Use a for loop with the variable item to iterate over grocery_list and print each item on its own line.
Rust
Hint
Use for item in &grocery_list { println!("{}", item); } to print each item.
4
Display the grocery list
Run the program to display all items in grocery_list, each on its own line.
Rust
Hint
Run the program and check that each grocery item prints on its own line.
Practice
(1/5)
1. Which of the following correctly creates an empty vector of integers in Rust?
easy
A. let v: Vec<i32> = Vec::new();
B. let v = vec!();
C. let v = Vector::new();
D. let v = vec![0];
Solution
Step 1: Understand how to create an empty vector
In Rust, an empty vector is created using Vec::new() with the type specified if needed.
Step 2: Check each option
let v: Vec<i32> = Vec::new(); uses Vec::new() with type i32, which is correct. let v = vec!(); uses vec!() which is invalid syntax. let v = Vector::new(); uses Vector::new() which is not a Rust type. let v = vec![0]; creates a vector with one element 0, not empty.
Final Answer:
let v: Vec<i32> = Vec::new(); -> Option A
Quick Check:
Empty vector = Vec::new() [OK]
Hint: Empty vector uses Vec::new() with type [OK]
Common Mistakes:
Using vec!() with empty parentheses
Using Vector instead of Vec
Creating vector with one element instead of empty
2. Which syntax correctly creates a vector with the values 1, 2, and 3 in Rust?
easy
A. let v = vec{1, 2, 3};
B. let v = Vec[1, 2, 3];
C. let v = vec(1, 2, 3);
D. let v = vec![1, 2, 3];
Solution
Step 1: Recall vector creation with values
Rust uses the macro vec![...] with square brackets and exclamation mark to create vectors with initial values.
Step 2: Evaluate each option
let v = vec![1, 2, 3]; uses correct syntax vec![1, 2, 3]. let v = Vec[1, 2, 3]; uses square brackets without exclamation mark, invalid. let v = vec(1, 2, 3); uses parentheses, invalid. let v = vec{1, 2, 3}; uses curly braces, invalid.
Final Answer:
let v = vec![1, 2, 3]; -> Option D
Quick Check:
Vector with values = vec![...] [OK]
Hint: Use vec! macro with square brackets for values [OK]
Common Mistakes:
Missing exclamation mark after vec
Using parentheses or curly braces instead of brackets
Using Vec[...] which is invalid syntax
3. What is the output of this Rust code?
let mut v = Vec::new();
v.push(10);
v.push(20);
println!("{:?}", v);
medium
A. [10, 20]
B. [20, 10]
C. 10 20
D. Error: cannot push to vector
Solution
Step 1: Understand vector push operations
The vector starts empty. push(10) adds 10 at the end, then push(20) adds 20 after 10.
Step 2: Check the printed output
The println!("{:?}", v) prints the vector in debug format showing all elements in order: [10, 20].
Final Answer:
[10, 20] -> Option A
Quick Check:
Push adds elements in order [OK]
Hint: push adds elements at the end, print shows all [OK]
Common Mistakes:
Assuming push adds at the front
Printing vector without debug format
Confusing order of elements
4. Identify the error in this Rust code snippet:
let v = Vec::new();
v.push(5);
medium
A. push method does not exist for vectors
B. Vec::new() does not create a vector
C. Cannot push to an immutable vector
D. Missing semicolon after Vec::new()
Solution
Step 1: Check vector mutability
The vector v is declared without mut, so it is immutable by default.
Step 2: Understand push method requirements
The push method requires the vector to be mutable to add elements. Trying to push to an immutable vector causes a compile error.
Final Answer:
Cannot push to an immutable vector -> Option C
Quick Check:
push needs mutable vector [OK]
Hint: Add mut to vector to allow push [OK]
Common Mistakes:
Forgetting mut keyword
Thinking Vec::new() returns non-vector
Assuming push works on immutable vectors
5. You want to create a vector of strings from an array of &str slices and then add a new string. Which code correctly does this?
hard
A. let v = vec!["a", "b", "c"]; v.push("d");
B. let mut v: Vec<String> = ["a", "b", "c"].iter().map(|&s| s.to_string()).collect(); v.push("d".to_string());
C. let mut v = Vec::new(); v.push(["a", "b", "c"]); v.push("d");
D. let mut v = vec![String::from("a"), String::from("b"), String::from("c")]; v.push('d');
Solution
Step 1: Convert &str slices to String vector
The array of &str slices needs to be converted to a vector of String using iter(), map() with to_string(), then collect().
Step 2: Add a new String element
After creating a mutable vector, use push with "d".to_string() to add a new string.
Step 3: Check other options
let v = vec!["a", "b", "c"]; v.push("d"); tries to push to an immutable vector of &str slices, invalid. let mut v = Vec::new(); v.push(["a", "b", "c"]); v.push("d"); tries to push an array inside vector, invalid. let mut v = vec![String::from("a"), String::from("b"), String::from("c")]; v.push('d'); pushes a char instead of String, invalid.
Final Answer:
let mut v: Vec<String> = ["a", "b", "c"].iter().map(|&s| s.to_string()).collect(); v.push("d".to_string()); -> Option B
Quick Check:
Convert slices to String vector, then push String [OK]
Hint: Map &str to String, collect to Vec<String>, then push [OK]
Common Mistakes:
Trying to push to immutable vector
Pushing wrong types (char instead of String)
Not converting &str slices to String
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.