1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| fn main() { let x = 5; let message = match x { n @ 1..=5 => format!("{} 在 1-5 之间", n), n @ 6..=10 => format!("{} 在 6-10 之间", n), n => format!("{} 在其他范围", n), }; println!("{}", message);
let point = (3, -5); match point { (0, 0) => println!("原点"), (x, 0) => println!("x 轴上: x={}", x), (0, y) => println!("y 轴上: y={}", y), (x, y) if x > 0 && y > 0 => println!("第一象限: ({}, {})", x, y), (x, y) if x < 0 && y > 0 => println!("第二象限: ({}, {})", x, y), (x, y) if x < 0 && y < 0 => println!("第三象限: ({}, {})", x, y), (x, y) => println!("第四象限: ({}, {})", x, y), }
struct Point { x: i32, y: i32, }
let p = Point { x: 5, y: 10 }; match p { Point { x: 0, y: 0 } => println!("原点"), Point { x, y: 0 } => println!("x 轴: x={}", x), Point { x: 0, y } => println!("y 轴: y={}", y), Point { x, y } => println!("点: ({}, {})", x, y), }
let reference = &42; match reference { &val => println!("解构引用: {}", val), } match *reference { val => println!("解引用: {}", val), } }
|