Bird
Raised Fist0
Rustprogramming~5 mins

Basic match usage in Rust - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Basic match usage
O(1)
Understanding Time Complexity

Let's see how the time it takes to run a simple match statement changes as the input changes.

We want to know how many steps the program does when it checks different values.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


fn describe_number(num: i32) -> &'static str {
    match num {
        1 => "one",
        2 => "two",
        3 => "three",
        _ => "other",
    }
}
    

This code checks a number and returns a word for 1, 2, or 3, or "other" if it is something else.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The match statement compares the input number to fixed cases.
  • How many times: It checks each case once until it finds a match or reaches the default.
How Execution Grows With Input

Each time the function runs, it checks a few fixed cases no matter what number you give it.

Input Size (n)Approx. Operations
1Checks up to 1 case
2Checks up to 2 cases
10Checks up to 3 cases then default

Pattern observation: The number of checks stays small and does not grow with input size.

Final Time Complexity

Time Complexity: O(1)

This means the time to run does not grow as the input number gets bigger.

Common Mistake

[X] Wrong: "The match will take longer if the number is bigger."

[OK] Correct: The match only checks a few fixed cases, so it does not depend on how big the number is.

Interview Connect

Understanding that simple match statements run in constant time helps you explain how your code handles choices quickly and clearly.

Self-Check

"What if we added 100 more cases to the match? How would the time complexity change?"

Practice

(1/5)
1. What does the match expression do in Rust?
easy
A. It compares a value against multiple patterns and runs matching code.
B. It creates a new variable with a fixed value.
C. It loops through a list of numbers.
D. It defines a function that returns a value.

Solution

  1. Step 1: Understand the purpose of match

    The match expression compares a value against several patterns.
  2. Step 2: Identify what happens on a match

    When a pattern matches, the corresponding code block runs.
  3. Final Answer:

    It compares a value against multiple patterns and runs matching code. -> Option A
  4. Quick Check:

    match checks patterns = C [OK]
Hint: Remember: match checks value patterns and runs matching code [OK]
Common Mistakes:
  • Thinking match creates variables
  • Confusing match with loops
  • Believing match defines functions
2. Which of the following is the correct syntax for a match expression in Rust?
easy
A. match value { pattern : action, _ : default_action }
B. match (value) { pattern -> action, _ -> default_action }
C. match value { pattern => action, _ => default_action }
D. match value (pattern => action, _ => default_action)

Solution

  1. Step 1: Recall Rust match syntax

    Rust uses curly braces with patterns and arrows: { pattern => action }.
  2. Step 2: Check each option's syntax

    match value { pattern => action, _ => default_action } matches Rust syntax exactly; others use wrong symbols or parentheses.
  3. Final Answer:

    match value { pattern => action, _ => default_action } -> Option C
  4. Quick Check:

    Correct match syntax = A [OK]
Hint: Look for curly braces and => arrows in match syntax [OK]
Common Mistakes:
  • Using parentheses instead of braces
  • Using -> instead of =>
  • Using colons instead of arrows
3. What is the output of this Rust code?
let number = 3;
match number {
  1 => println!("One"),
  2 => println!("Two"),
  3 => println!("Three"),
  _ => println!("Other"),
}
medium
A. One
B. Two
C. Other
D. Three

Solution

  1. Step 1: Identify the matched value

    The variable number is 3.
  2. Step 2: Find matching pattern in match arms

    The pattern 3 matches, so it prints "Three".
  3. Final Answer:

    Three -> Option D
  4. Quick Check:

    number=3 matches 3 => "Three" [OK]
Hint: Match value to pattern exactly to find output [OK]
Common Mistakes:
  • Choosing default (_) arm instead of exact match
  • Confusing numbers in patterns
  • Ignoring the value of the variable
4. Find the error in this Rust code snippet:
let x = 5;
match x {
  1 => println!("One"),
  2 => println!("Two"),
  3 => println!("Three")
}
medium
A. Missing semicolon after println! macros
B. Missing default (_) arm to cover other values
C. Incorrect variable name in match
D. Using parentheses instead of braces in match

Solution

  1. Step 1: Check match arms coverage

    The match covers only 1, 2, and 3 but variable is 5.
  2. Step 2: Identify missing default arm

    Without a _ arm, the code will not compile because not all values are covered.
  3. Final Answer:

    Missing default (_) arm to cover other values -> Option B
  4. Quick Check:

    All values must be matched or _ arm added [OK]
Hint: Always add _ arm to cover unmatched cases [OK]
Common Mistakes:
  • Assuming semicolons are required after println!
  • Ignoring missing default arm errors
  • Confusing variable names
5. You want to write a match expression that returns a string describing a number: "small" for 1 or 2, "medium" for 3 or 4, and "large" for any other number. Which code correctly uses match to do this?
hard
A. match num { 1 | 2 => "small", 3 | 4 => "medium", _ => "large", }
B. match num { 1, 2 => "small", 3, 4 => "medium", _ => "large", }
C. match num { 1 || 2 => "small", 3 || 4 => "medium", _ => "large", }
D. match num { [1, 2] => "small", [3, 4] => "medium", _ => "large", }

Solution

  1. Step 1: Understand pattern alternatives in match

    Rust uses | to match multiple patterns in one arm.
  2. Step 2: Check each option's pattern syntax

    match num { 1 | 2 => "small", 3 | 4 => "medium", _ => "large", } correctly uses 1 | 2 and 3 | 4. Others use invalid syntax like commas, ||, or arrays.
  3. Final Answer:

    match num { 1 | 2 => "small", 3 | 4 => "medium", _ => "large", } -> Option A
  4. Quick Check:

    Use | for multiple patterns in match arms [OK]
Hint: Use | to combine multiple patterns in one match arm [OK]
Common Mistakes:
  • Using commas instead of | in patterns
  • Using || which is logical OR, not pattern OR
  • Trying to match arrays instead of values
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