Bird
Raised Fist0
Rustprogramming~5 mins

Vector vs array comparison in Rust

Choose your learning style10 modes available
Introduction

Vectors and arrays both store lists of values, but they work differently. Knowing when to use each helps you write better Rust programs.

When you know the number of items won't change, use an array.
When you need to add or remove items dynamically, use a vector.
When you want fast access to elements by index in a fixed-size list, use an array.
When you want a growable list that can change size during the program, use a vector.
When you want to pass a fixed-size list to a function, arrays are simpler.
Syntax
Rust
fn main() {
    // Array: fixed size, elements of the same type
    let fixed_array: [i32; 3] = [10, 20, 30];

    // Vector: growable, elements of the same type
    let mut growable_vector: Vec<i32> = Vec::new();
    growable_vector.push(10);
    growable_vector.push(20);
    growable_vector.push(30);
}

Arrays have a fixed size known at compile time.

Vectors can grow or shrink during runtime.

Examples
An empty array has zero length and cannot grow.
Rust
let empty_array: [i32; 0] = [];
An array with one element, size fixed at 1.
Rust
let single_element_array = [42];
A vector starts empty and grows as you add elements.
Rust
let mut vector = Vec::new();
vector.push(5);
vector.push(10);
Create a vector with initial values using the vec! macro.
Rust
let vector_with_values = vec![1, 2, 3];
Sample Program

This program shows how arrays and vectors differ. Arrays have fixed size and cannot be changed after creation. Vectors can grow and their elements can be changed.

Rust
fn main() {
    // Create a fixed-size array
    let fixed_array: [i32; 3] = [100, 200, 300];
    println!("Array before change: {:?}", fixed_array);

    // Create a growable vector
    let mut growable_vector: Vec<i32> = Vec::new();
    growable_vector.push(100);
    growable_vector.push(200);
    growable_vector.push(300);
    println!("Vector before change: {:?}", growable_vector);

    // Change an element in the vector
    growable_vector[1] = 250;
    println!("Vector after change: {:?}", growable_vector);

    // Uncommenting the next line will cause a compile error because arrays are fixed size
    // fixed_array[1] = 250;

    // Show length differences
    println!("Array length: {}", fixed_array.len());
    println!("Vector length: {}", growable_vector.len());

    // Add an element to the vector
    growable_vector.push(400);
    println!("Vector after push: {:?}", growable_vector);
}
OutputSuccess
Important Notes

Arrays have O(1) access time and fixed size, so they use less memory overhead.

Vectors have O(1) amortized access time and can grow, but may reallocate memory when growing.

Common mistake: Trying to add elements to an array causes a compile error because arrays cannot grow.

Use arrays when size is fixed and known at compile time; use vectors when size can change.

Summary

Arrays have fixed size and are simple to use for known-size lists.

Vectors are growable and flexible for lists that change size.

Choose arrays for fixed data and vectors for dynamic data.

Practice

(1/5)
1. Which of the following statements correctly describes the main difference between a Rust array and a Rust vector?
easy
A. Arrays have a fixed size known at compile time, while vectors can grow or shrink at runtime.
B. Vectors have a fixed size known at compile time, while arrays can grow or shrink at runtime.
C. Both arrays and vectors have fixed sizes and cannot change after creation.
D. Arrays are only used for strings, while vectors are used for numbers.

Solution

  1. Step 1: Understand array size behavior

    Arrays in Rust have a fixed size that must be known when the program is compiled.
  2. Step 2: Understand vector size behavior

    Vectors are dynamic and can grow or shrink during program execution.
  3. Final Answer:

    Arrays have a fixed size known at compile time, while vectors can grow or shrink at runtime. -> Option A
  4. Quick Check:

    Array fixed size, Vector dynamic size = C [OK]
Hint: Remember: arrays fixed size, vectors flexible size [OK]
Common Mistakes:
  • Confusing which type is fixed or dynamic
  • Thinking vectors are fixed size
  • Assuming arrays can grow dynamically
2. Which of the following is the correct syntax to declare a vector of integers in Rust?
easy
A. let v = (1, 2, 3);
B. let v = [1, 2, 3];
C. let v = vector(1, 2, 3);
D. let v = vec![1, 2, 3];

Solution

  1. Step 1: Identify vector creation syntax

    In Rust, vectors are created using the macro vec![...] with square brackets and exclamation mark.
  2. Step 2: Compare options

    let v = vec![1, 2, 3]; uses vec![1, 2, 3], which is correct. let v = [1, 2, 3]; is an array, C and D are invalid syntax for vectors.
  3. Final Answer:

    let v = vec![1, 2, 3]; -> Option D
  4. Quick Check:

    Vector syntax uses vec! macro = A [OK]
Hint: Vectors use vec! macro with square brackets [OK]
Common Mistakes:
  • Using array syntax instead of vec! macro
  • Missing exclamation mark in vec! macro
  • Using parentheses instead of brackets
3. What will be the output of the following Rust code?
let arr = [10, 20, 30];
let vec = vec![10, 20, 30];
println!("{} {}", arr.len(), vec.len());
medium
A. 3 0
B. 3 3
C. 0 3
D. Compilation error

Solution

  1. Step 1: Check array length

    The array arr has 3 elements, so arr.len() returns 3.
  2. Step 2: Check vector length

    The vector vec also has 3 elements, so vec.len() returns 3.
  3. Final Answer:

    3 3 -> Option B
  4. Quick Check:

    Both lengths are 3 = B [OK]
Hint: Both array and vector have length 3 here [OK]
Common Mistakes:
  • Assuming vector length is zero initially
  • Confusing array and vector length methods
  • Expecting compilation error due to different types
4. Identify the error in this Rust code snippet:
let arr = [1, 2, 3];
arr.push(4);
medium
A. Arrays do not have a push method; only vectors do.
B. The array is missing a semicolon after declaration.
C. The push method requires a mutable reference to the array.
D. The code is correct and will compile.

Solution

  1. Step 1: Check array methods

    Arrays in Rust have fixed size and do not support the push method.
  2. Step 2: Understand push method usage

    The push method is only available for vectors, which are growable.
  3. Final Answer:

    Arrays do not have a push method; only vectors do. -> Option A
  4. Quick Check:

    push() only works on vectors = D [OK]
Hint: Only vectors support push(), arrays do not [OK]
Common Mistakes:
  • Trying to push to arrays
  • Thinking arrays can be resized
  • Ignoring method availability on types
5. You want to store a list of user scores that can change size during the program. Which Rust type should you choose and why?
hard
A. Use a tuple because it can hold multiple types of scores.
B. Use an array because it is faster and fixed size is better for scores.
C. Use a vector because it can grow or shrink as scores are added or removed.
D. Use a string because scores are numbers stored as text.

Solution

  1. Step 1: Analyze data size requirement

    The list of user scores can change size, so a fixed size container is not suitable.
  2. Step 2: Choose appropriate Rust type

    Vectors are growable and flexible, making them ideal for dynamic lists like scores.
  3. Final Answer:

    Use a vector because it can grow or shrink as scores are added or removed. -> Option C
  4. Quick Check:

    Dynamic list needs vector = A [OK]
Hint: Dynamic size needs vector, fixed size needs array [OK]
Common Mistakes:
  • Choosing array for dynamic data
  • Confusing tuples with lists
  • Using string for numeric data
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard