我正在学习 Rust。
我正在使用 .to_digit() 将字符转换为整数,但之后我无法匹配转换的值。任何帮助表示赞赏!
let c: char = '2';
let to_num = c.to_digit(10);
match to_num {
Some(2) => {println!("matched")},
None => {},
}
Run Code Online (Sandbox Code Playgroud)
错误:模式Some(0u32..=1u32)和Some(3u32..=std::u32::MAX)未涵盖
char::to_digit返回Option<u32>,表示转换成功或None转换失败的数字。您正在匹配:
Some(2), 意味着成功的转换导致数字 2, 和None,表示转换不成功。编译器告诉您,对于除 2 以外的任何数字的所有成功转换怎么样?( Some(0u32..=1u32), (3u32..=std::u32::MAX))
解决此问题的一种方法是使用下划线模式,它可以匹配任何内容。这样,您可以匹配您感兴趣的任何内容,然后将其_用作后备。例如:
match to_num {
Some(2) => println!("matched"),
_ => (),
}
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,简单的“if”语句可能是更好(更规范)的选择:
if to_num == Some(2) {
println!("matched");
}
Run Code Online (Sandbox Code Playgroud)