From cfc4436eeba553e43ec4ebe1a3c1ce08f4c9eb85 Mon Sep 17 00:00:00 2001 From: Sil Klaasboer Date: Thu, 18 Dec 2025 11:58:43 +0100 Subject: [PATCH] add match and match expressions --- control_flow/src/main.rs | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/control_flow/src/main.rs b/control_flow/src/main.rs index b7681ca..c7e964c 100644 --- a/control_flow/src/main.rs +++ b/control_flow/src/main.rs @@ -1,23 +1,45 @@ fn main() { - //if else statements let mut num1 = 10; let mut num2 = 5; if num1 < num2 { - println!("{} is smaller then {}",num1, num2); - } - else - { - println!("{} is bigger then {}",num1,num2); + println!("{} is smaller then {}", num1, num2); + } else { + println!("{} is bigger then {}", num1, num2); } - //if expressions + //if expressions //always need a else case and must be of the same type, ternary operations do not exist but this results the same - num1 = if num1 != num2 {5} else {15}; - println!("num 1: {}",num1) + num1 = if num1 != num2 { 5 } else { 15 }; + println!("num 1: {}", num1); + //match + //same as switch case + match num1 { + 1 => println!("Number is 1"), + 2 => println!("Number is 2"), + 3 => println!("Number is 3"), + 6 => println!("Number is 6"), + 7 => println!("Number is 7"), + _ => println!("Number is none of the other statements"), + } + // _ is a default and altough syntax specifies => it should be an exact match + //combining match results + match num2 { + 1 | 2 | 3 | 4 => println!("Number is in range of 1 to 4"), + 5 | 7 => println!("Number is 5 or 7"), + _ => println!("Number is none of the above"), + } + //match expression + println!("Old number for num2: {}",num2); + let num2 = match num2 { + 1 | 2 | 3 | 4 => 1234, + 5 | 7 => 57, + _ => -1, + }; + println!("New number for num2: {}",num2); }