What does it mean that if can be used as an expression in Rust?
In Rust, if can return a value, so you can assign the result of an if block to a variable. This means if is not just for control flow but also produces a value.
Click to reveal answer
beginner
How do you assign a value to a variable using if as an expression?
You write <code>let variable = if condition { value1 } else { value2 };</code>. The variable gets the value from the block that matches the condition.
Click to reveal answer
intermediate
What happens if you omit the else block when using if as an expression?
Rust requires an else block when using if as an expression to ensure both branches return a value. Omitting else causes a compile error.
Click to reveal answer
intermediate
Can the blocks inside if expression return different types?
No. Both if and else blocks must return the same type because the variable assigned expects a single type.
Click to reveal answer
beginner
Example: What is the value of <code>result</code> after this code?<br><pre>let number = 7;
let result = if number % 2 == 0 { "even" } else { "odd" };</pre>
The value of result is "odd" because 7 is not divisible by 2, so the else block runs.
Click to reveal answer
What must you always include when using if as an expression in Rust?
AA loop inside the <code>if</code>
BA semicolon after <code>if</code>
CA return statement
DAn <code>else</code> block
✗ Incorrect
When using if as an expression, Rust requires an else block to provide a value for all cases.
What type must the if and else blocks return when used as an expression?
AThey must return integers
BThey can return any types
CThey must return the same type
DThey must return booleans
✗ Incorrect
Both blocks must return the same type because the expression's value must have a single consistent type.
What is the value of x after this code?
let x = if true { 10 } else { 20 };
A10
B20
Ctrue
DCompile error
✗ Incorrect
Since the condition is true, the if block runs and x is assigned 10.
Can you use if as an expression without assigning its value to a variable?
AYes, but it’s uncommon
BNo, it must always be assigned
CYes, <code>if</code> can be used as a statement only
DNo, <code>if</code> is only an expression
✗ Incorrect
You can use if as an expression without assignment, but usually it’s used to produce a value for a variable.
What happens if the if block returns an integer and the else block returns a string?
ARust converts the string to integer
BRust throws a compile-time error
CThe program runs but with warnings
DThe <code>else</code> block is ignored
✗ Incorrect
Rust requires both blocks to return the same type; otherwise, it causes a compile-time error.
Explain how if can be used as an expression in Rust and why it is useful.
Think about how you can choose a value based on a condition.
You got /4 concepts.
Describe what happens if you forget the else block when using if as an expression.
Rust wants to be sure what value to assign in all cases.
You got /3 concepts.
Practice
(1/5)
1. What does using if as an expression in Rust allow you to do?
easy
A. Define functions inside an if statement
B. Only execute code blocks without returning values
C. Assign a value based on a condition directly to a variable
D. Create loops that run while a condition is true
Solution
Step 1: Understand the role of if as expression
In Rust, if can return a value, unlike some languages where it only controls flow.
Step 2: Recognize assignment usage
This means you can assign a variable directly using let x = if condition { value1 } else { value2 };.
Final Answer:
Assign a value based on a condition directly to a variable -> Option C
Quick Check:
if as expression = assign value [OK]
Hint: Think of if as a value picker, not just a decision maker [OK]
Common Mistakes:
Thinking if can't return values
Confusing if expression with loops
Assuming if can define functions
2. Which of the following is the correct syntax for using if as an expression to assign a value in Rust?
easy
A. let x = if (condition) then 10 else 20;
B. let x = if condition { 10 } else { 20 };
C. let x = if condition: 10 else: 20;
D. let x = if condition { 10 } else 20;
Solution
Step 1: Recall Rust if expression syntax
Rust uses curly braces for blocks and requires both if and else blocks to be enclosed in braces when returning values.
Step 2: Check each option
let x = if condition { 10 } else { 20 }; correctly uses if condition { 10 } else { 20 };. Others use invalid syntax like missing braces or keywords.
Final Answer:
let x = if condition { 10 } else { 20 }; -> Option B
Quick Check:
Correct Rust if expression syntax = let x = if condition { 10 } else { 20 }; [OK]
Hint: Remember: Rust uses braces {} for both if and else blocks [OK]
Common Mistakes:
Omitting braces around else block
Using 'then' keyword (not in Rust)
Using colons instead of braces
3. What is the output of this Rust code?
let number = 7;
let result = if number % 2 == 0 { "even" } else { "odd" };
println!("{}", result);
medium
A. even
B. 7
C. Compilation error
D. odd
Solution
Step 1: Evaluate the condition
The condition checks if 7 modulo 2 equals 0. Since 7 % 2 is 1, the condition is false.
Step 2: Determine which branch runs
Because the condition is false, the else branch runs, returning "odd".
Final Answer:
odd -> Option D
Quick Check:
7 is odd = odd [OK]
Hint: Check the condition result carefully before picking output [OK]
Common Mistakes:
Assuming 7 % 2 == 0 is true
Confusing output with the number itself
Expecting a syntax error
4. Identify the error in this Rust code using if as expression:
let x = if true { 5 } else { "five" };
medium
A. Mismatched types in if and else branches
B. Missing semicolon after else block
C. Cannot use if as expression in let binding
D. Condition must be a variable, not a literal
Solution
Step 1: Check types returned by if and else
The if branch returns an integer 5, the else branch returns a string "five".
Step 2: Understand Rust type rules for if expressions
Both branches must return the same type because the if expression must have a single consistent type.
Final Answer:
Mismatched types in if and else branches -> Option A
Quick Check:
if branches must match types = Mismatched types in if and else branches [OK]
Hint: Ensure both if and else return same type [OK]
Common Mistakes:
Ignoring type mismatch errors
Thinking semicolon is missing
Believing literals can't be conditions
5. You want to assign a variable status based on a score: if score >= 90, status is "Excellent"; if score >= 60, status is "Pass"; otherwise, "Fail". Which Rust code correctly uses nested if expressions to do this?
hard
A. let status = if score >= 90 { "Excellent" } else if score >= 60 { "Pass" } else { "Fail" };
B. let status = if score >= 90 { "Excellent" } else { if score >= 60 { "Pass" } else "Fail" };
C. let status = if score >= 90 { "Excellent" } else if score >= 60 { "Pass" }; else { "Fail" };
D. let status = if score >= 90 { "Excellent" } else { "Pass" } else { "Fail" };
Solution
Step 1: Understand nested if expressions
Rust supports chaining if and else if expressions to select among multiple conditions.
Step 2: Check syntax correctness
let status = if score >= 90 { "Excellent" } else if score >= 60 { "Pass" } else { "Fail" }; correctly uses else if and ends with else block. let status = if score >= 90 { "Excellent" } else { if score >= 60 { "Pass" } else { "Fail" } }; nests if inside else but is more verbose. Options C and D have syntax errors.
Final Answer:
let status = if score >= 90 { "Excellent" } else if score >= 60 { "Pass" } else { "Fail" }; -> Option A
Quick Check:
Use else if for clean multi-condition if expressions [OK]
Hint: Use else if for multiple conditions, not nested if inside else [OK]
Common Mistakes:
Missing else block causing syntax error
Incorrect semicolon placement
Using multiple else blocks
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.