Afs*_*fsa 27 pattern-matching match rust
在这种情况下,两个句点和下划线之间有什么区别:
let a = Some("a");
match a {
Some(_) => println!("we are in match _"),
_ => panic!(),
}
match a {
Some(..) => println!("we are in match .."),
_ => panic!(),
}
Run Code Online (Sandbox Code Playgroud)
两者都可以编译并运行,但是为什么要选择其中一个而不是另一个呢?
Cha*_*man 32
在这种情况下,没有区别。
一般来说,_忽略一个元素(字段、数组元素、元组字段等),同时..忽略剩下的所有字段(除了明确指定的字段等之外的所有字段)。但由于Some只包含一个字段,因此具有相同的效果。
这是它们不同的示例:
struct Foo(u32, u32);
fn foo(v: Foo) {
match v {
Foo(..) => {}
Foo(_, _) => {}
}
}
Run Code Online (Sandbox Code Playgroud)