如何解决如何在Rust中将字符转换为整数并匹配武器?
我正在学习Rust。
我正在使用.to_digit()将char转换为整数,但是此后我无法匹配转换值。任何帮助表示赞赏!
let c: char = '2';
let to_num = c.to_digit(10);
match to_num {
Some(2) => {println!("matched")},None => {},}
错误:模式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"),_ => (),}
但是,在这种情况下,简单的“ if”语句可能是更好的选择(更规范):
if to_num == Some(2) {
println!("matched");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。