如果让多个模式不起作用

时间:2017-08-25 08:14:27

标签: rust

您可以使用if let模式匹配范围:

let n=1
if let 1...3 = n { println!("found in range") }

但我不能让它适用于多种模式:

// this does not compile
if let 1 | 2 | 3 = n { println!("found in pattern") }
//      -^ unexpected token

我认为第二个if let去了:

// this does compile and work
match n {
    1 | 2 | 3 => println!("found in pattern"),
    _ => {}
}

那么给出了什么?我使用了错误的语法吗?我是否期望多种模式应该被误导?这只是没有实现吗?

playground

1 个答案:

答案 0 :(得分:8)

if let只是不支持多种模式(请参阅RFC issue 935)。请改用match