我正在使用带有match
的{{1}}语句,并且如果字符与某个字符匹配,则希望将字符附加到字符串。我想这样做
.chars().next()
但是收到错误:
keyword.push(line.chars().next())
我如何将其附加到我的字符串上?
答案 0 :(得分:11)
嗯,就是这样:因为next()
返回Option<char>
,它可能会返回None
。您需要考虑该情况......否则您可能会引起恐慌,您的申请将退出。
因此,盲目且容易出错的方式是打开它:
keyword.push(line.chars().next().unwrap());
这可能会在某些时候崩溃。你想要的是解构它并确保那里有一些东西:
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);
}
}