KDN*_*KDN 0 pattern-matching rust
我有以下匹配条件,测试输入的猜测是否是有效数字(来自铁锈猜谜游戏练习):
let mut guess = String::new();
io::stdin().read_line(&mut guess).expect("Failed to read");
let guess: u32 = match guess.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
Run Code Online (Sandbox Code Playgroud)
如何扩展匹配以检查数字是否为负数或0(我想在这种情况下抛出错误)并在数字为正数时正常进行?
我尝试在Ok case中的num上添加一个if,但是会抛出一个错误(可能是因为num绑定到guess的值)并且似乎也不是惯用的.
一个match臂可谨慎:
let guess: u32 = match guess.trim().parse() {
Ok(num) if num > 0 => num,
Ok(num) => return Err(whatever),
Err(_) => continue,
};
Run Code Online (Sandbox Code Playgroud)