在模式匹配的默认情况下,如何访问匹配值?

dro*_*te7 5 rust

问题是关于默认情况。

让我们考虑以下代码:

fn func(x: i64) {
  match x {
    0 => println!("Zero"),
    1 => println!("One"),
    _ => {
      //How to get the value here not via repeating the matched expression ?
    }
  };
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*nov 7

假设您不想重复表达式,因为它不仅比变量复杂,可以将其绑定到变量:

fn func(x: i64) {
  match <some complex expression> {
    0 => println!("Zero"),
    1 => println!("One"),
    y => {
      // you can use y here
    }
  };
}
Run Code Online (Sandbox Code Playgroud)

这也可以作为默认情况,因为变量模式就像匹配所有内容一样_

_ 当您不想使用该值时,此功能非常有用。

  • 还要注意,y导致将值_moved_转换为y,而_意味着该值将被忽略。如果要避免移动,可以使用模式ref y来创建对该值的引用。 (3认同)