Arrays vs Other Data Structures: When to Choose Arrays
📖 Scenario: You are helping a small library organize its book inventory. The library wants to store a fixed list of book titles that rarely change. You will use an array to hold these book titles because arrays are simple and fast for fixed-size collections.
🎯 Goal: Build a Rust program that creates an array of book titles, sets a maximum allowed title length, filters books based on title length, and prints the filtered list.
📋 What You'll Learn
Create an array called books with exactly these titles: "The Hobbit", "1984", "Fahrenheit 451", "The Catcher in the Rye", "To Kill a Mockingbird"
Create a variable called max_length and set it to 15
Use a for loop with variable book to iterate over books and collect titles with length less than or equal to max_length into a vector called short_books
Print the short_books vector
💡 Why This Matters
🌍 Real World
Libraries, inventories, and simple fixed lists often use arrays for fast access and simple storage.
💼 Career
Understanding when to use arrays versus other data structures like vectors is important for writing efficient and clear Rust programs.
Progress0 / 4 steps
1
Create the array of book titles
Create an array called books with these exact titles: "The Hobbit", "1984", "Fahrenheit 451", "The Catcher in the Rye", "To Kill a Mockingbird"
DSA Rust
Hint
Use square brackets [] to create an array and separate titles with commas.
2
Set the maximum allowed book title length
Create a variable called max_length and set it to 15
DSA Rust
Hint
Use let max_length = 15; to create the variable.
3
Filter books by title length
Use a for loop with variable book to iterate over books and collect titles with length less than or equal to max_length into a vector called short_books
DSA Rust
Hint
Use Vec::new() to create an empty vector. Use books.iter() to loop over the array. Use book.len() to get the length of each title.
4
Print the filtered list of short book titles
Print the short_books vector
DSA Rust
Hint
Use println!("{:?}", short_books); to print the vector in debug format.
Practice
(1/5)
1. Which of the following is the best reason to choose an array over other data structures like linked lists or hash maps?
easy
A. You want to store key-value pairs.
B. You need fast access to elements by index.
C. You need to frequently insert or delete elements in the middle.
D. You want to avoid fixed size limitations.
Solution
Step 1: Understand array access speed
Arrays provide constant time access to elements by their index because elements are stored contiguously in memory.
Step 2: Compare with other data structures
Linked lists and hash maps do not provide direct index access; linked lists require traversal, and hash maps use keys, not indexes.
Final Answer:
You need fast access to elements by index. -> Option B
Quick Check:
Fast index access = A [OK]
Hint: Arrays give quick element access by position [OK]
Common Mistakes:
Confusing arrays with hash maps for key-value storage
Thinking arrays are best for frequent insertions/deletions
Ignoring fixed size limitation of arrays
2. Which of the following is the correct way to declare a fixed-size array of 5 integers in Rust?
easy
A. let arr: [i32; 5] = [0; 5];
B. let arr = [5; i32];
C. let arr = Vec<i32>::new(5);
D. let arr = array(5, 0);
Solution
Step 1: Recall Rust array syntax
In Rust, fixed-size arrays are declared with type and size like [type; size].
Step 2: Check each option
let arr: [i32; 5] = [0; 5]; correctly declares an array of 5 integers initialized to 0. let arr = [5; i32]; has wrong syntax, C creates a vector not an array, D is invalid Rust.
Final Answer:
let arr: [i32; 5] = [0; 5]; -> Option A
Quick Check:
Fixed-size array syntax = B [OK]
Hint: Use [type; size] syntax for fixed arrays in Rust [OK]
Common Mistakes:
Using Vec instead of array for fixed size
Wrong order of size and type in declaration
Using non-Rust syntax for arrays
3. What will be the output of the following Rust code?
let arr = [10, 20, 30, 40, 50];
let slice = &arr[1..4];
println!("{:?}", slice);
medium
A. [20, 30, 40]
B. [30, 40, 50]
C. [20, 30, 40, 50]
D. [10, 20, 30]
Solution
Step 1: Understand Rust slice syntax
The slice &arr[1..4] includes elements from index 1 up to but not including index 4.
Step 2: Identify elements in the slice
Indexes 1, 2, 3 correspond to values 20, 30, and 40 respectively.
Final Answer:
[20, 30, 40] -> Option A
Quick Check:
Slice excludes end index = D [OK]
Hint: Slice includes start index, excludes end index [OK]
Common Mistakes:
Including the end index element in the slice
Confusing slice with full array
Misreading index positions
4. Consider this Rust code snippet:
let mut arr = [1, 2, 3, 4, 5];
arr.push(6);
What is the error and how to fix it?
medium
A. The push method requires a reference; use &6.
B. The array is immutable; declare with let instead of let mut.
C. Arrays have no push method; use a Vec instead.
D. The array size is fixed; increase size to 6 in declaration.
Solution
Step 1: Identify array limitations in Rust
Fixed-size arrays in Rust do not have a push method because their size cannot change.
Step 2: Suggest correct data structure
Vectors (Vec) are growable arrays and support push.
Final Answer:
Arrays have no push method; use a Vec instead. -> Option C
Quick Check:
Fixed arrays no push = C [OK]
Hint: Use Vec for dynamic size, arrays are fixed [OK]
Common Mistakes:
Trying to push on fixed-size arrays
Confusing mutability with resizability
Ignoring Rust's strict type and method rules
5. You need to store a large collection of numbers where you will frequently access elements by index and rarely add or remove elements. Which data structure should you choose in Rust and why?
hard
A. Use a hash map because it provides fast key-based access.
B. Use a Vec because it allows dynamic resizing and fast index access.
C. Use a linked list because it allows easy insertion and deletion anywhere.
D. Use a fixed-size array because it provides fast index access and fixed memory layout.
Solution
Step 1: Analyze access and modification needs
Frequent index access requires fast, constant-time access. Rare modifications mean fixed size is acceptable.
Step 2: Compare arrays and vectors
Fixed-size arrays have faster access and less overhead than vectors but cannot resize. Since additions/removals are rare, fixed size is fine.
Step 3: Exclude other structures
Linked lists have slow index access; hash maps are for key-value, not index-based access.
Final Answer:
Use a fixed-size array because it provides fast index access and fixed memory layout. -> Option D
Quick Check:
Fast access + rare changes = fixed array [OK]
Hint: Fixed arrays excel with fast access and stable size [OK]
Common Mistakes:
Choosing Vec when fixed size suffices
Using linked list for index access
Confusing hash map keys with indexes
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.