let tuple: (u32, String) = (5, String::from("five"));
let (x, s) = tuple;
// 以下行将导致编译错误,因为String类型并未实现Copy, 所以tuple被整体move掉了。
// println!("Tuple is: {:?}", tuple);
let tuple = (5, String::from("five"));
// 忽略String类型,而u32实现了Copy,则tuple不会被move
let (x, _) = tuple;
println!("Tuple is: {:?}", tuple);
范围和多重匹配
模式匹配可以被用来匹配单种可能,当然也就能被用来匹配多种情况:
范围
在模式匹配中,当我想要匹配一个数字(字符)范围的时候,我们可以用...来表示:
let x = 1;
match x {
1 ... 10 => println!("一到十"),
_ => println!("其它"),
}
let c = 'w';
match c {
'a' ... 'z' => println!("小写字母"),
'A' ... 'Z' => println!("大写字母"),
_ => println!("其他字符"),
}
多重匹配
当我们只是单纯的想要匹配多种情况的时候,可以使用 | 来分隔多个匹配条件
let x = 1;
match x {
1 | 2 => println!("一或二"),
_ => println!("其他"),
}