[英]What does { .. } mean in a pattern?
#[macro_use]
extern crate failure;
use actix_web::{error, http, HttpResponse};
#[derive(Fail, Debug)]
enum UserError {
#[fail(display = "Validation error on field: {}", field)]
ValidationError { field: String },
}
impl error::ResponseError for UserError {
fn error_response(&self) -> HttpResponse {
match *self {
UserError::ValidationError { .. } =>
HttpResponse::new(http::StatusCode::BAD_REQUEST),
}
}
}
{ .. }
在这里是什么意思?
这是一种模式匹配的解构通配符 ,它使您无需指定对象的所有成员。 在这种情况下:
UserError::ValidationError { .. }
对于该match
分支,枚举变量为ValidationError
,无论其内容如何(在本例中为field
):
enum UserError {
#[fail(display = "Validation error on field: {}", field)]
ValidationError { field: String },
}
当一个人只关注某个对象的某些成员时,它也很有用。 考虑一个包含baz
和bar
字段的Foo
结构:
struct Foo {
bar: usize,
baz: usize,
}
如果您只对baz
感兴趣,则可以编写:
fn main() {
let x = Foo { bar: 0, baz: 1 };
match x {
Foo { baz, .. } => println!("{}", baz), // prints 1
_ => (),
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.