よく、それはnext()
がOption<char>
を返すので、None
を返す可能性があります。そのシナリオを考慮する必要があります。そうしないと、パニックが発生し、アプリケーションが終了します。
ので、ブラインドとエラーが発生しやすい方法は、それをアンラップすることです:そうないくつかの時点でクラッシュします
keyword.push(line.chars().next().unwrap());
。何が欲しいのは、それをdestructureと何かがありますことを確認することです。
match line.chars().next() {
Some(c) => {
if c == 'H' || c == 'W' {
keyword.push(c);
}
},
None =>()
}
Shepmasterはコメントで指摘するように、(我々は唯一のmatch
の単一アームを気にしている)上の特定のシナリオがに凝縮させることができますif let
結合:言っ
if let Some(c) = line.chars().next() {
if c == 'H' || c == 'W' {
keyword.push(c);
}
}
- あなたはfor
ループを介して反復することにより、無料でこのすべてを取得する:
for c in line.chars() {
if c == 'H' || c == 'W' {
keyword.push(c);
}
}
Playground example
私は、もし面白い腕1本との「マッチ」があるときは、「もしかしたら」が良いと言いたいと思います。 – Shepmaster
良い点@Shepmaster - 尋ねられた質問を考えれば、あまりにも多くの概念を導入しないようにしました。私は別のオプションとしてそれを追加します。 –