Это шаблон подстановки для сопоставления с образцом , который позволяет не указывать все элементы объекта.В этом случае:
UserError::ValidationError { .. }
Для этой ветви match
достаточно, чтобы вариант перечисления был ValidationError
, независимо от его содержимого (в данном случае field
):
enum UserError {
#[fail(display = "Validation error on field: {}", field)]
ValidationError { field: String },
}
Это также полезно, когда речь идет только о некоторых членах объекта;рассмотрим структуру Foo
, содержащую поля baz
и bar
:
struct Foo {
bar: usize,
baz: usize,
}
Если вас интересует только baz
, вы можете написать:
fn main() {
let x = Foo { bar: 0, baz: 1 };
match x {
Foo { baz, .. } => println!("{}", baz), // prints 1
_ => (),
}
}