Bird
Raised Fist0
Rustprogramming~5 mins

Enum variants in Rust - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Enum variants
O(1)
Understanding Time Complexity

When working with enum variants in Rust, it's important to know how the program's running time changes as you use them.

We want to see how checking or matching enum variants affects the time it takes to run the code.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


enum Color {
    Red,
    Green,
    Blue,
}

fn is_red(color: &Color) -> bool {
    match color {
        Color::Red => true,
        _ => false,
    }
}

This code defines an enum with three variants and a function that checks if a given color is Red.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Matching the enum variant once per function call.
  • How many times: Exactly once each time is_red is called.
How Execution Grows With Input

Checking the enum variant takes the same amount of time no matter how many variants exist or how many times you call the function.

Input Size (n)Approx. Operations
11 check
1010 checks
10001000 checks

Pattern observation: Each call does one check, so the total work grows directly with how many times you call the function.

Final Time Complexity

Time Complexity: O(1)

This means checking an enum variant takes the same short time every time, no matter what.

Common Mistake

[X] Wrong: "Matching enum variants gets slower if the enum has more variants."

[OK] Correct: Rust uses efficient code to check variants, so the time stays constant regardless of how many variants exist.

Interview Connect

Understanding how enum variant checks work helps you reason about code speed and write clear, efficient Rust programs.

Self-Check

"What if we changed the enum to hold data inside each variant? How would the time complexity of matching change?"

Practice

(1/5)
1. What is an enum variant in Rust?
easy
A. A function inside a struct
B. A named option inside an enum representing a possible value
C. A variable declared with let
D. A type of loop in Rust

Solution

  1. Step 1: Understand enum structure

    An enum groups related named options called variants.
  2. Step 2: Define variant role

    Each variant represents a possible value the enum can hold.
  3. Final Answer:

    A named option inside an enum representing a possible value -> Option B
  4. Quick Check:

    Enum variant = named option [OK]
Hint: Enum variants are named choices inside enums [OK]
Common Mistakes:
  • Confusing variants with functions
  • Thinking variants are variables
  • Mixing variants with loops
2. Which of the following is the correct syntax to define an enum variant named Red inside an enum Color?
easy
A. enum Color { Red }
B. enum Color = Red;
C. struct Color { Red }
D. let Color = Red;

Solution

  1. Step 1: Recall enum syntax

    Enums use the syntax enum Name { Variant1, Variant2 }.
  2. Step 2: Match correct syntax

    enum Color { Red } correctly defines enum Color with variant Red.
  3. Final Answer:

    enum Color { Red } -> Option A
  4. Quick Check:

    Enum variant syntax = enum Name { Variant } [OK]
Hint: Enum variants go inside braces after enum name [OK]
Common Mistakes:
  • Using '=' instead of braces
  • Defining variants inside struct
  • Using let instead of enum
3. What will be the output of this Rust code?
enum Direction {
    North,
    East,
    South,
    West,
}

fn main() {
    let dir = Direction::East;
    match dir {
        Direction::North => println!("Going North"),
        Direction::East => println!("Going East"),
        Direction::South => println!("Going South"),
        Direction::West => println!("Going West"),
    }
}
medium
A. Going North
B. Going South
C. Going East
D. Going West

Solution

  1. Step 1: Identify enum variant assigned

    The variable dir is set to Direction::East.
  2. Step 2: Match statement output

    The match arm for Direction::East prints "Going East".
  3. Final Answer:

    Going East -> Option C
  4. Quick Check:

    Match on Direction::East prints "Going East" [OK]
Hint: Match prints message for assigned enum variant [OK]
Common Mistakes:
  • Confusing variant names
  • Ignoring match arms
  • Assuming default output
4. Identify the error in this enum variant usage:
enum Status {
    Active,
    Inactive,
}

fn main() {
    let s = Status::active;
}
medium
A. Enum variants must have data inside parentheses
B. Missing semicolon after enum definition
C. Cannot assign enum variant to variable
D. Enum variant names are case-sensitive; should be 'Active'

Solution

  1. Step 1: Check variant usage

    The code uses Status::active but enum defines Active with uppercase A.
  2. Step 2: Understand Rust case sensitivity

    Rust enum variants are case-sensitive; active is undefined.
  3. Final Answer:

    Enum variant names are case-sensitive; should be 'Active' -> Option D
  4. Quick Check:

    Variant names must match case exactly [OK]
Hint: Enum variant names are case-sensitive [OK]
Common Mistakes:
  • Using wrong case for variants
  • Forgetting semicolons (not error here)
  • Thinking variants need data always
5. Given this enum with data:
enum Message {
    Quit,
    Move { x: i32, y: i32 },
    Write(String),
}

fn main() {
    let msg = Message::Move { x: 10, y: 20 };
    match msg {
        Message::Quit => println!("Quit message"),
        Message::Move { x, y } => println!("Move to ({}, {})", x, y),
        Message::Write(text) => println!("Write: {}", text),
    }
}

What will this program print?
hard
A. Move to (10, 20)
B. Quit message
C. Write: Move to (10, 20)
D. Compilation error due to missing variant

Solution

  1. Step 1: Identify enum variant with data

    The variable msg is Message::Move { x: 10, y: 20 }.
  2. Step 2: Match arms handle each variant

    The match arm for Message::Move { x, y } prints coordinates.
  3. Final Answer:

    Move to (10, 20) -> Option A
  4. Quick Check:

    Match prints coordinates for Move variant [OK]
Hint: Match extracts data from enum variant fields [OK]
Common Mistakes:
  • Confusing variant names
  • Ignoring data inside variants
  • Expecting compilation error incorrectly
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