2017-08-25 4 views
6

を聞かせている場合で作業していない:複数のパターンは、あなたが範囲にパターンマッチに<code>if let</code>を使用することができます

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

が、私はそれは複数のパターンで動作させることはできません脱糖二if let

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

ので、何ができますか?間違った構文を使用していますか?複数のパターンがうまく機能しないという私の期待はありますか?これは実装されていないのですか?

playground

+1

https://github.com/rust-lang/rfcs/issues/935 – interjay

+0

@interjayああありがとう、それは実装されていません。 githubの問題は複数のパターンについて言及していますが、ディスカッションではガードに焦点を当てています。なんらかの理由で(醜い構文になってしまったのですか?)私は、警備員がletと一緒に働かないのは驚きではありませんでした。動作していない複数のパターンと動作​​している範囲は、私にとっては直感的ではないようです... –

答えて

8

if letだけで複数のパターンを(RFC issue 935を参照)をサポートしていません。代わりにmatchを使用してください。