Rust:“@”(at 符号)运算符的作用是什么?

Tho*_*rge 9 rust

我在代码中看到了以下行,但我不确定它的作用,因为我@以前没有遇到过该运算符。

if let e@Err(_) = changed {
    ...
}
Run Code Online (Sandbox Code Playgroud)

这行代码可以不使用运算符来编写吗@?那会是什么样子?

Abd*_*P M 9

这是一种将模式的匹配值绑定到变量的方法(使用语法:)variable @ subpattern

例子:

let x = 2;

match x {
    e @ 1 ..= 5 => println!("got a range element {}", e),
    _ => println!("anything"),
}
Run Code Online (Sandbox Code Playgroud)

  • @ThorkilVærge。`@` 绑定*匹配值*,该值将是 `Result`(假设 `changed` 是 `Result`)类型。所以第二种情况(“B”)中“e”的类型是“changed”的类型 (2认同)