Bird
Raised Fist0
Rustprogramming~5 mins

Option enum usage in Rust - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the Option enum in Rust?
The Option enum is a type that represents either some value (Some) or no value (None). It is used to handle cases where a value might be missing safely.
Click to reveal answer
beginner
How do you create an Option with a value of 5?
You use Some(5) to create an Option that holds the value 5.
Click to reveal answer
beginner
What does None represent in the Option enum?
None means there is no value present. It is like saying "nothing" or "empty" safely without using null.
Click to reveal answer
intermediate
How can you safely get the value inside an Option?
You can use pattern matching with match or methods like unwrap_or to get the value safely or provide a default if it is None.
Click to reveal answer
intermediate
Why is using Option better than using null values?
Because Option forces you to handle the case when a value might be missing, preventing many bugs caused by unexpected null values.
Click to reveal answer
What does Option::None represent in Rust?
ANo value present
BA value of zero
CAn error occurred
DA default value
How do you create an Option holding the number 10?
ASome(10)
BOption(10)
CNone(10)
DOption::new(10)
Which Rust feature helps you safely extract a value from an Option?
Afor loop
Bif statement
Cmatch statement
Dwhile loop
What happens if you call unwrap() on an Option::None?
AReturns a default value
BReturns None
CReturns zero
DPanics (crashes) the program
Which method provides a default value if an Option is None?
Aunwrap()
Bunwrap_or()
Cexpect()
Dget()
Explain what the Option enum is and why it is useful in Rust.
Think about how Rust avoids null pointer bugs.
You got /4 concepts.
    Describe how you can safely get a value from an Option without causing a program crash.
    Consider Rust's pattern matching and methods on Option.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the Option enum represent in Rust?
      easy
      A. A way to handle errors explicitly.
      B. A value that can be either something (Some) or nothing (None).
      C. A type of loop in Rust.
      D. A macro for printing output.

      Solution

      1. Step 1: Understand the purpose of Option enum

        The Option enum is used to represent a value that might be present or absent.
      2. Step 2: Match the description to the correct option

        A value that can be either something (Some) or nothing (None). correctly describes Option as either Some(value) or None, representing presence or absence.
      3. Final Answer:

        A value that can be either something (Some) or nothing (None). -> Option B
      4. Quick Check:

        Option enum = Some or None [OK]
      Hint: Option means value or no value, like a yes/no box [OK]
      Common Mistakes:
      • Confusing Option with error handling Result type
      • Thinking Option is a loop or macro
      • Assuming Option always contains a value
      2. Which of the following is the correct way to create an Option containing the integer 5?
      easy
      A. let x = Some(5);
      B. let x = Option(5);
      C. let x = Some[5];
      D. let x = Option::new(5);

      Solution

      1. Step 1: Recall the syntax for creating an Option with a value

        In Rust, Some(value) wraps a value inside an Option.
      2. Step 2: Identify the correct syntax among options

        let x = Some(5); uses Some(5), which is the correct syntax. Others are invalid or do not exist.
      3. Final Answer:

        let x = Some(5); -> Option A
      4. Quick Check:

        Use Some(value) to create Option with value [OK]
      Hint: Use Some(value) to wrap a value in Option [OK]
      Common Mistakes:
      • Using Option(5) instead of Some(5)
      • Using square brackets instead of parentheses
      • Trying to call Option::new which doesn't exist
      3. What will be the output of this Rust code?
      let x: Option<i32> = Some(10);
      match x {
          Some(val) if val > 5 => println!("Greater than 5: {}", val),
          Some(val) => println!("Value: {}", val),
          None => println!("No value"),
      }
      medium
      A. Value: 10
      B. No value
      C. Greater than 5: 10
      D. Compilation error

      Solution

      1. Step 1: Analyze the Option value and match arms

        The variable x is Some(10). The match checks if val > 5 first.
      2. Step 2: Determine which match arm runs

        Since 10 > 5, the first arm runs, printing "Greater than 5: 10".
      3. Final Answer:

        Greater than 5: 10 -> Option C
      4. Quick Check:

        Some(10) with val > 5 prints "Greater than 5: 10" [OK]
      Hint: Match with if guards runs first matching condition [OK]
      Common Mistakes:
      • Ignoring the if guard and picking second arm
      • Thinking None arm runs for Some value
      • Assuming compilation error due to if guard
      4. Identify the error in this Rust code snippet using Option:
      let x: Option<i32> = None;
      let y = x.unwrap();
      println!("Value: {}", y);
      medium
      A. No error, prints "Value: None"
      B. unwrap returns Option, not value
      C. Compilation error due to type mismatch
      D. Runtime panic because unwrap on None

      Solution

      1. Step 1: Understand unwrap behavior on None

        Calling unwrap() on None causes a runtime panic because there is no value.
      2. Step 2: Check the code behavior

        Since x is None, unwrap() panics and program crashes at runtime.
      3. Final Answer:

        Runtime panic because unwrap on None -> Option D
      4. Quick Check:

        unwrap on None panics at runtime [OK]
      Hint: unwrap on None causes panic, avoid without check [OK]
      Common Mistakes:
      • Thinking unwrap returns None safely
      • Expecting compilation error instead of runtime panic
      • Assuming unwrap returns Option instead of value
      5. Given a vector of integers, how can you use Option to safely find the first even number and print it, or print "No even number" if none exist? Choose the correct Rust code snippet.
      hard
      A. let nums = vec![1, 3, 5]; if let Some(even) = nums.iter().find(|&&x| x % 2 == 0) { println!("First even: {}", even); } else { println!("No even number"); }
      B. let nums = vec![1, 3, 5]; let even = nums.iter().find(|x| x % 2 == 0).unwrap(); println!("First even: {}", even);
      C. let nums = vec![1, 3, 5]; let even = nums.iter().filter(|x| x % 2 == 0).next().unwrap(); println!("First even: {}", even);
      D. let nums = vec![1, 3, 5]; let even = nums.iter().find(|&&x| x % 2 == 0).unwrap_or(0); println!("First even: {}", even);

      Solution

      1. Step 1: Understand safe Option handling with find()

        nums.iter().find returns Option<&i32>. Using if let Some(even) safely handles Some or None.
      2. Step 2: Check each option for correctness and safety

        let nums = vec![1, 3, 5]; if let Some(even) = nums.iter().find(|&&x| x % 2 == 0) { println!("First even: {}", even); } else { println!("No even number"); } uses if let to print the even number or fallback message safely. Others use unwrap() which panics if no even number.
      3. Final Answer:

        Option A code safely finds and prints first even or fallback message. -> Option A
      4. Quick Check:

        Use if let Some(...) to safely handle Option from find() [OK]
      Hint: Use if let Some(...) to safely unwrap Option without panic [OK]
      Common Mistakes:
      • Using unwrap() without checking for None causes panic
      • Incorrect closure syntax in find/filter
      • Using unwrap_or with incompatible types
      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