除了一种情况外,匹配返回直接输入

时间:2016-01-29 14:12:09

标签: return rust match

我们说我有这样的枚举

pub enum Status<T> {
  Error,
  NotStarted,
  Incomplete,
  Complete(T),
}

我想要这样做

match foo(x) {
  Complete(i) => Complete(bar(i)),
  Error       => Error,
  NotStarted  => NotStarted,
  Incomplete  => Incomplete,
}

即。如果它匹配一个&#34;特殊&#34;选项和返回匹配输入否则看不见。在我的代码中,这种情况发生了很多。

还有另一种方法可以用更短的方式做到这一点吗?可能是这样的:

match foo(x) {
  Complete(i) => Complete(bar(i)),
  _           => _,
}

1 个答案:

答案 0 :(得分:3)

将其他案例绑定到名称并返回

match foo(x) {
  Complete(i) => Complete(bar(i)),
  other       => other,
}