fn main() { // let favorite_color: Option<&str> = None; // let is_tuesday = false; // let age: Result = "34".parse(); // // if let Some(color) = favorite_color { // dbg!(color); // } // else if is_tuesday { // dbg!("green"); // } // else if let Ok(age) = age { // if age > 30 { // dbg!("purple"); // } // else { // dbg!("orange"); // } // } // else { // dbg!("blue"); // } // let mut stack = Vec::new(); // // stack.push(1); // stack.push(2); // stack.push(3); // // while let Some(top) = stack.pop() { // dbg!(top); // } // let v = vec!['a', 'b', 'c']; // // for (_, value) in v.iter().enumerate() { // //println!("{} is at index {}", value, index); // dbg!(value); // } // let (..) = (1, 2, 3); // let point = (3, 5); // print_coords(&point); // let Some(x) = Some(5); // if let Some(x) = Some(5) { // dbg!(x); // } // if let x = 5 { // dbg!(x); // }; // let x = 1; // // match x { // 1 => dbg!("one"), // 2 => dbg!("two"), // 3 => dbg!("three"), // _ => dbg!("else"), // }; // let x = Some(5); // let y = 10; // // match x { // Some(50) => println!("got 50"), // Some(y) => println!("matched, y == {:?}", y), // _ => println!("default: x == {:?}", x), // } // // println!("end: x == {:?}, y == {:?}", x, y); // let x = 5; // // match x { // 1 ... 5 => println!("one through five"), // _ => println!("else"), // } // let x = 'w'; // // match x { // 'a' ... 'j' => println!("early ascii char"), // 'k' ... 'z' => println!("late ascii char"), // _ => println!("else"), // } // let p = Point { x: 0, y: 7 }; // //let Point { x: a, y: b } = p; // let Point { x, y } = p; // assert_eq!(0, x); // assert_eq!(7, y); // let p = Point { x: 1, y: 0 }; // // match p { // Point { x, y: 0 } => dbg!("x-axis"), // Point { x: 0, y } => dbg!("y-axis"), // Point { x, y } => dbg!("neither"), // }; // //let msg = Message::ChangeColor(0, 160, 255); // //let msg = Message::Write(String::from("hi there")); // //let msg = Message::Move { // // x: 1, // // y: 2, // //}; // let msg = Message::ChangeColor(Color::Hsv(0, 160, 255)); // // match msg { // Message::Quit => { // println!("the quit variant has no data to destructure.") // }, // Message::Move { x, y } => { // println!( // "Move in the direction {}, {}", // x, // y // ); // } // Message::Write(text) => println!("text message: {}", text), // Message::ChangeColor(Color::Rgb(r, g, b)) => { // println!( // "Change the color to RGB {}{}{}", // r, // g, // b // ) // } // Message::ChangeColor(Color::Hsv(h, s, v)) => { // println!( // "Change the color to HSV {}{}{}", // h, // s, // v // ) // } // } // let points = vec![ // Point { x: 0, y: 0 }, // Point { x: 1, y: 5 }, // Point { x: 10, y: -3 }, // ]; // // let sum_of_squares: i32 = points // .iter() // .map(|&Point { x, y } | x * x + y * y) // .sum(); // dbg!(sum_of_squares); // // // let ((feet, inches), Point { x, y }) = ((3, 10), Point { x: 3, y: -10 }); // foo(3, 4); // let mut setting_value = Some(5); // //let new_setting_value = Some(10); // let new_setting_value = None; // // match (setting_value, new_setting_value) { // (Some(_), Some(_)) => { // println!("can't overwrite existing customized value."); // } // _ => { // setting_value = new_setting_value; // } // } // // println!("setting is {:?}", setting_value); // // // let numbers = (2, 4, 8, 16, 32); // // match numbers { // (first, _, third, _, fifth) => { // println!("numbers: {}, {}, {}", first, third, fifth) // }, // } // // // let _x = 5; // let _y = 10; // // // let s = Some(String::from("hello")); // // if let Some(_) = s { // println!("found a string"); // } // // println!("{:?}", s); // let origin = Point { x: 1, y: 2, z: 3 }; // // match origin { // Point {x, .. } => dbg!(x), // }; // // let numbers = (2, 4, 8, 16, 32); // // match numbers { // (first, .., last) => { // dbg!(first); // dbg!(last); // }, // } // let num = Some(4); // // let test = match num { // Some(x) if x < 5 => println!("{}", x), // Some(x) => println!("{}", x), // None => (), // }; // let x = Some(10); // let y = 10; // // match x { // Some(50) => println!("got 50"), // Some(n) if n == y => println!("{:?}", n), // _ => println!("{:?}", x), // } // // println!("{:?} {:?}", x, y); // let x = 4; // let y = false; // // match x { // 4 | 5 | 6 if y => println!("yes"), // _ => println!("no"), // } enum Message { Hello { id: i32 }, } let msg = Message::Hello { id: 13 }; match msg { Message::Hello { id: id_variable @ 3...7 } => { println!("{}", id_variable) }, Message::Hello { id: 10...12 } => { println!("another range") }, Message::Hello { id } => { println!("else") }, } println!("Done."); } //struct Point { // x: i32, // y: i32, // z: i32, //} //fn foo(_: i32, y: i32) { // println!("this code only uses y: {}", y); //} //fn print_coords(&(x, y): &(i32, i32)) { // println!("{}, {}", x, y); //} //struct Point { // x: i32, // y: i32, //} //enum Message { // Quit, // Move { x: i32, y: i32 }, // Write(String), // ChangeColor(Color), //} // // //enum Color { // Rgb(i32, i32, i32), // Hsv(i32, i32, i32) //}