有没有一种方法可以使用 map 以便在满足特定条件时可以返回错误?原因是我正在尝试FromStr为我的结构实现特征BigNum:
impl FromStr for BigNum {
fn from_str(s: &str) -> Result<BigNum, BigNum::Err> {
let filter_vec = t_num.chars().
map(|a| match a.to_digit(10) {
Some(x) => { x },
None => { /* return from function with Err */ }
});
}
}
Run Code Online (Sandbox Code Playgroud)
这是可能的吗?或者我应该简单地迭代chars()自己并在到达时返回错误None?只是想知道是否有一种简单的方法可以map从函数中跳出并返回
这里有两个关键信息会很有用:
FromIterator(which powers Iterator::collect) 也被实施Result。由于您没有提供MCVE,我编写了可以实际编译的示例代码:
fn foo(input: &[u8]) -> Result<Vec<u8>, ()> {
input.iter().map(|&i| {
if i > 127 {
Err(())
} else {
Ok(i + 1)
}
}).collect()
}
fn main() {
let a = foo(&[1,2,3,4]);
let b = foo(&[200,1,2,3]);
println!("{:?}", a);
println!("{:?}", b);
}
Run Code Online (Sandbox Code Playgroud)
如果println!在mapbody中插入a ,可以看到 200 之后没有处理任何数字。
| 归档时间: |
|
| 查看次数: |
1773 次 |
| 最近记录: |