我在我的代码中看到了以下这行内容,但是我不确定它的作用,因为我以前没有遇到过@
运算符。
if let e@Err(_) = changed {
...
}
这行代码是否可以不用
@
运算符来编写,那会是什么样子?我在我的代码中看到了以下这行内容,但是我不确定它的作用,因为我以前没有遇到过@
运算符。
if let e@Err(_) = changed {
...
}
@
运算符来编写,那会是什么样子?variable @ subpattern
)。例如:let x = 2;
match x {
e @ 1 ..= 5 => println!("got a range element {}", e),
_ => println!("anything"),
}
if let Err(e) = changed
和(B)if let e@Err(_) = changed
有什么不同吗? - Thorkil Værge@
绑定了匹配值,假设changed
是Result
类型,则e
在第二种情况(B
)中的类型是changed
的类型。 - Abdul Niyas P Mif let Err(_) = &changed {
// continue to use `changed` like you would use `e`
}
changed
,您需要匹配参考&changed
。否则,它将被移动并丢弃(除非它恰好是Copy
)。if changed.is_err()
。 - Sven Marnachif changed.is_err() { let e = changed; ...}
。 - trent
if changed.is_err() { let e = changed; ... }
。 - undefined