What is the purpose of the match statement in Rust?
The match statement lets you compare a value against many patterns and execute code based on which pattern matches. It's like a more powerful switch in other languages.
Click to reveal answer
beginner
How do you write a simple match expression to check if a number is 1, 2, or something else?
Example:
match number {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}
The underscore _ means "anything else".
Click to reveal answer
beginner
What does the underscore _ pattern mean in a match?
It means "match anything else". It's a catch-all pattern used when you don't want to specify all possible cases.
Click to reveal answer
intermediate
Can match return a value in Rust? How?
Yes! <code>match</code> is an expression, so it returns the value of the matched arm. For example:<br><pre>let result = match x {
1 => "one",
_ => "other",
};</pre>
Click to reveal answer
beginner
What happens if you don't cover all possible cases in a match?
Rust will give a compile error because match must be exhaustive. You must cover all cases or use _ to catch the rest.
Click to reveal answer
What does the _ pattern do in a Rust match?
ACauses a compile error
BMatches only zero
CMatches any value not matched before
DMatches only negative numbers
✗ Incorrect
The underscore _ is a catch-all pattern that matches any value not matched by previous arms.
Which of these is a valid match arm syntax?
Aif 1 { println!("One") }
Bcase 1: println!("One")
Cwhen 1 => println!("One")
D1 => println!("One")
✗ Incorrect
Rust uses the syntax pattern => expression in match arms.
What will this code print?
let x = 3;
match x {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}
AOther
BOne
CTwo
DCompile error
✗ Incorrect
Since 3 matches no specific arm, the _ arm runs, printing "Other".
Can match be used to assign a value to a variable?
AYes, because <code>match</code> is an expression
BNo, <code>match</code> only controls flow
COnly if you use <code>if</code> inside <code>match</code>
DOnly with <code>return</code>
✗ Incorrect
match returns the value of the matched arm, so you can assign it to variables.
What happens if you forget to cover all cases in a match?
ARust compiles silently
BRust gives a compile error
CRust compiles but warns
DRust runs but panics at runtime
✗ Incorrect
Rust requires match to be exhaustive and will not compile if some cases are missing.
Explain how the match statement works in Rust and why it is useful.
Think about how <code>match</code> compares values and handles all possibilities.
You got /4 concepts.
Write a simple Rust match expression that prints "small" for 1 or 2, "medium" for 3 or 4, and "large" for anything else.
Use | to combine patterns for the same arm.
You got /4 concepts.
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
Step 1: Understand the purpose of match
The match expression compares a value against several patterns.
Step 2: Identify what happens on a match
When a pattern matches, the corresponding code block runs.
Final Answer:
It compares a value against multiple patterns and runs matching code. -> Option A
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
Step 1: Recall Rust match syntax
Rust uses curly braces with patterns and arrows: { pattern => action }.
Step 2: Check each option's syntax
match value { pattern => action, _ => default_action } matches Rust syntax exactly; others use wrong symbols or parentheses.
Final Answer:
match value { pattern => action, _ => default_action } -> Option C
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
Step 1: Identify the matched value
The variable number is 3.
Step 2: Find matching pattern in match arms
The pattern 3 matches, so it prints "Three".
Final Answer:
Three -> Option D
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
Step 1: Check match arms coverage
The match covers only 1, 2, and 3 but variable is 5.
Step 2: Identify missing default arm
Without a _ arm, the code will not compile because not all values are covered.
Final Answer:
Missing default (_) arm to cover other values -> Option B
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
Step 1: Understand pattern alternatives in match
Rust uses | to match multiple patterns in one arm.
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.
Final Answer:
match num {
1 | 2 => "small",
3 | 4 => "medium",
_ => "large",
} -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.