如何将字符转换为整数并在 Rust 中匹配武器?

Min*_*ham 1 casting rust

我正在学习 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)未涵盖

Cod*_*256 5

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)