๐ Scenario: You are building a simple program to describe the weather using Rust's match expression. This helps you choose a message based on the weather condition.
๐ฏ Goal: Create a Rust program that uses a match expression to print a message about the weather condition.
๐ What You'll Learn
Create a variable called weather with the value "sunny"
Create a variable called message that uses a match expression on weather
Use match arms for "sunny", "rainy", and a default arm
Print the message variable
๐ก Why This Matters
๐ Real World
Using <code>match</code> expressions helps programs make decisions based on different inputs, like choosing messages or actions depending on conditions.
๐ผ Career
Understanding <code>match</code> is important for Rust programming jobs, especially when handling different cases clearly and safely.
Progress0 / 4 steps
1
Create the weather variable
Create a variable called weather and set it to the string "sunny".
Rust
Hint
Use let to create a variable and assign the string "sunny".
2
Create the message variable with match
Create a variable called message that uses a match expression on weather. Use arms for "sunny" and "rainy" that return appropriate messages, and a default arm that returns "Unknown weather".
Rust
Hint
Use match weather { ... } and include arms for "sunny", "rainy", and a default arm _.
3
Add a print statement to show the message
Add a println! statement to print the message variable.
Rust
Hint
Use println!("{}", message); to display the message.
4
Run the program and see the output
Run the program to see the printed message about the weather.
Rust
Hint
Check the console output after running the program.
Practice
(1/5)
1. What is the main purpose of the match statement in Rust?
easy
A. To check a value against multiple patterns clearly and concisely
B. To create loops that run a fixed number of times
C. To define new data types
D. To handle errors using exceptions
Solution
Step 1: Understand the role of match
The match statement compares a value against many patterns, making code clearer than many if-else statements.
Step 2: Compare with other options
Loops run repeatedly, data types define structures, and exceptions handle errors, but match is for pattern matching.
Final Answer:
To check a value against multiple patterns clearly and concisely -> Option A
Quick Check:
Match = pattern checking [OK]
Hint: Match replaces many if-else with clear pattern checks [OK]
Common Mistakes:
Confusing match with loops
Thinking match defines types
Assuming match handles exceptions
2. Which of the following is the correct syntax for a match expression in Rust?
easy
A. match value { pattern1 => expr1, pattern2 => expr2, _ => default_expr }
B. match (value) { pattern1: expr1; pattern2: expr2; default: default_expr }
C. match value { pattern1 -> expr1, pattern2 -> expr2, _ -> default_expr }
D. match value { pattern1 => expr1; pattern2 => expr2; _ => default_expr }
Solution
Step 1: Recall Rust match syntax
Rust uses curly braces with patterns followed by => and expressions separated by commas.
Step 2: Check each option
match value { pattern1 => expr1, pattern2 => expr2, _ => default_expr } uses correct braces, arrows, and commas. Options B and D use semicolons incorrectly. match value { pattern1 -> expr1, pattern2 -> expr2, _ -> default_expr } uses -> instead of =>.
Final Answer:
match value { pattern1 => expr1, pattern2 => expr2, _ => default_expr } -> Option A
Quick Check:
Correct match syntax uses => and commas [OK]
Hint: Use => between pattern and expression, separate arms with commas [OK]
Common Mistakes:
Using semicolons instead of commas
Using -> instead of =>
Missing the catch-all _ pattern
3. What will be 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, so the match will look for pattern 3.
Step 2: Find the matching arm
The arm 3 => println!("Three") matches and prints "Three".
Final Answer:
Three -> Option D
Quick Check:
number=3 matches 3 => "Three" [OK]
Hint: Match value exactly to print correct output [OK]
Common Mistakes:
Choosing default _ arm instead of exact match
Confusing numbers with strings
Ignoring the value of number
4. Identify the error in this Rust match code snippet:
let x = 5;
match x {
1 => println!("One"),
2 => println!("Two"),
3 => println!("Three")
}
medium
A. Missing semicolon after println! macros
B. Using parentheses instead of curly braces in match
C. Missing catch-all _ pattern to handle other values
D. Incorrect variable declaration
Solution
Step 1: Check match arms completeness
The match covers 1, 2, and 3 but does not handle other values like 5.
Step 2: Understand Rust match requirements
Rust requires all possible values to be covered, usually by a catch-all _ pattern.
Final Answer:
Missing catch-all _ pattern to handle other values -> Option C
Quick Check:
Always include _ to cover unmatched cases [OK]
Hint: Always add _ arm to handle unexpected values [OK]