Hello again, Rustonaut! Today, we're unraveling the mysteries of an essential programming tool: control structures. They guide the flow of our program. Are you ready to delve into if-else
statements and match
statements?
The structure of an if
and if-else
construct in Rust follows this format:
Rust1if condition { 2 // action if condition is true 3} 4 5if condition { 6 // action if condition is true 7} else { 8 // action if condition is false 9}
When the provided condition
is true
, we execute the block within the if
clause. When the condition
is false
, we enter an optional else
block.
An if
statement is simplistic yet powerful. It instructs the compiler to execute actions only under specific conditions. Let's imagine we're checking a planet's atmospheric composition:
Rust1let oxygen_level = 78; // The oxygen level on the planet 2 3if oxygen_level > 20 { 4 println!("Planet has breathable air!"); // Suitable oxygen_level 5} else { 6 println!("Oxygen level too low!"); // Oxygen level is insufficient 7} 8// The code prints: Planet has breathable air!
In the example above, the statement if oxygen_level > 20
checks if the oxygen level is above 20. If the condition proves true
, it prints "Planet has breathable air!"
. If it is false
, the else
statement provides an alternative command, printing "Oxygen level too low!"
.
To handle multiple conditions, we utilize else if
:
Rust1let oxygen_level = 58; 2if oxygen_level > 70 { 3 println!("Excellent Oxygen level!"); 4} else if oxygen_level > 50 { 5 println!("Oxygen level is acceptable."); 6} else { 7 println!("Oxygen level is too low!"); 8} 9// The code prints: Oxygen level is acceptable.
The else if
keyword provides alternative paths until the correct one is met, allowing us to respond appropriately to different atmospheric conditions. When the first condition is met, Rust ignores all remaining else if
conditions.
A match
statement in Rust enables us to navigate multiple outcomes based on a variable's value. Let's suppose we're journeying to different planets and each requires different preparations:
Rust1let planet_number = 3; // The selected planet number 2 3match planet_number { 4 1 => println!("Gearing up for Planet 1!"), // Case for planet 1 5 2 => println!("Preparing for Planet 2!"), // Case for planet 2 6 3 => println!("Get ready for Planet 3!"), // Case for planet 3 7 _ => println!("Resting at the spaceship."), // Default case 8} 9// The code prints: Get ready for Planet 3!
In this code, each match
arm corresponds to a planet number. The _
in the last arm is a catch-all pattern that matches any value. Every match
statement must end with a _
arm.
Bravo! You've successfully navigated the nebula of Rust's control structures today. Keep practicing these skills in our upcoming exercises. Your coding skills will continue to strengthen as we dive deeper into the Rust universe, preparing you for the next stage of your coding journey. Push on!