📖 Scenario: You are managing a line of customers waiting for service at a store. You want to check who is at the front of the line without removing them.
🎯 Goal: Build a simple queue using a VecDeque in Rust and peek at the front element to see who is next in line.
📋 What You'll Learn
Create a queue with exact customer names in order
Add a variable to hold the front element peek
Use the front() method to peek at the first customer
Print the peeked customer name exactly
💡 Why This Matters
🌍 Real World
Queues are used in real life to manage lines of people, tasks waiting to be processed, or messages waiting to be handled.
💼 Career
Understanding queues and how to peek at elements is important for software developers working with task scheduling, event handling, and data streaming.
Progress0 / 4 steps
1
Create the Queue
Create a VecDeque called queue with these exact customer names in order: "Alice", "Bob", "Charlie".
DSA Rust
Hint
Use VecDeque::from with an array of strings to create the queue.
2
Add a Variable to Peek Front
Add a variable called front_customer to hold the peeked front element of queue using the front() method.
DSA Rust
Hint
Use queue.front() to get an Option with the front element.
3
Handle the Peeked Value
Use a match statement on front_customer to get the customer name or "No customers" if the queue is empty. Store the result in a variable called customer_name.
DSA Rust
Hint
Use match to unwrap the Option safely.
4
Print the Front Customer
Print the value of customer_name using println! exactly as it is.
DSA Rust
Hint
Use println!("{}", customer_name); to print the front customer.
Practice
(1/5)
1. What does the peek() method do in a queue data structure?
easy
A. Adds a new element to the back of the queue
B. Returns the front element without removing it
C. Removes the front element from the queue
D. Checks if the queue is empty
Solution
Step 1: Understand the purpose of peek()
The peek() method is used to look at the front element of the queue without changing the queue.
Step 2: Differentiate peek() from other queue operations
Unlike dequeue which removes the front element, peek() only returns it without removal.
Final Answer:
Returns the front element without removing it -> Option B
Quick Check:
peek() = front element [OK]
Hint: Peek means look without removing [OK]
Common Mistakes:
Confusing peek() with dequeue()
Thinking peek() adds elements
Assuming peek() checks emptiness
2. Which of the following is the correct Rust syntax to peek the front element of a VecDeque named queue?
easy
A. let front = queue.front();
B. let front = queue.peek_front();
C. let front = queue.peek();
D. let front = queue[0];
Solution
Step 1: Recall VecDeque front method
In Rust, VecDeque provides front() to look at the front element without removing it.
Step 2: Check other options
peek_front() and peek() are not valid VecDeque methods; queue[0] is invalid because VecDeque does not implement Index<usize>.
Final Answer:
let front = queue.front(); -> Option A
Quick Check:
VecDeque peek front = front() [OK]
Hint: Use front() to peek front in VecDeque [OK]
Common Mistakes:
Using peek_front() which does not exist on VecDeque
Using peek() which does not exist
Trying queue[0] without Index implementation
3. What will be the output of the following Rust code?
use std::collections::VecDeque;
fn main() {
let mut queue = VecDeque::new();
queue.push_back(10);
queue.push_back(20);
queue.push_back(30);
if let Some(front) = queue.front() {
println!("{}", front);
}
}
medium
A. 10
B. 20
C. 30
D. None
Solution
Step 1: Understand queue contents after push_back
Elements added in order: 10 (front), 20, 30 (back).
Step 2: Peek front element
front() returns reference to 10, the first element.
Final Answer:
10 -> Option A
Quick Check:
Front element = 10 [OK]
Hint: front() returns first pushed element [OK]
Common Mistakes:
Confusing front() with pop_front()
Expecting last element instead of first
Ignoring Option handling with if let
4. Identify the error in this Rust code that tries to peek the front element of a queue:
use std::collections::VecDeque;
fn main() {
let mut queue = VecDeque::new();
queue.push_back(5);
let front = queue.peek();
println!("{}", front.unwrap());
}
medium
A. Cannot unwrap Option returned by peek()
B. push_back() does not add elements
C. VecDeque has no method named peek()
D. println! macro syntax is incorrect
Solution
Step 1: Check VecDeque methods
VecDeque does not have a method named peek(); it uses front() to peek front element.
Step 2: Analyze other parts
push_back() correctly adds elements; unwrap() is valid if Option is Some; println! syntax is correct.
Final Answer:
VecDeque has no method named peek() -> Option C
Quick Check:
peek() method missing in VecDeque [OK]
Hint: Use front(), not peek(), on VecDeque [OK]
Common Mistakes:
Using peek() instead of front()
Ignoring method availability in VecDeque
Assuming unwrap() always safe without checking
5. You have a queue implemented using VecDeque in Rust. You want to peek the front element safely and print it or print "Empty" if the queue is empty. Which code snippet correctly does this?
hard
A. if queue.is_empty() { println!("Empty"); } else { println!("{}", queue.pop_front().unwrap()); }
B. println!("{}", queue.front().unwrap());
C. println!("{}", queue[0]);
D. if let Some(front) = queue.front() { println!("{}", front); } else { println!("Empty"); }
Solution
Step 1: Understand safe peek usage
front() returns Option<&T>. Using if let Some(front) safely handles empty queue.
Step 2: Check other options
The unwrap version panics if empty (unsafe), direct indexing is invalid on VecDeque, the version with pop_front() removes the element instead of peeking.
Final Answer:
if let Some(front) = queue.front() { println!("{}", front); } else { println!("Empty"); } -> Option D
Quick Check:
Safe peek with if let Some(front) = queue.front() { println!("{}", front); } else { println!("Empty"); } [OK]
Hint: Use if let Some(front) = front() for safe peek [OK]
Common Mistakes:
Unwrapping Option without checking
Using pop_front() instead of front()
Indexing VecDeque like a vector
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.