Rust 在map中满足条件时从函数返回
是否有一种方法可以使用map,以便在满足特定条件时返回错误?原因是我试图为我的structRust 在map中满足条件时从函数返回,rust,Rust,是否有一种方法可以使用map,以便在满足特定条件时返回错误?原因是我试图为我的structBigNum实现traitFromStr: 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) {
BigNum
实现traitFromStr
:
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 */ }
});
}
}
impl FromStr for BigNum{
fn来自_str(s:&str)->结果{
让filter_vec=t_num.chars()。
地图(| a |将a与数字(10)匹配){
一些(x)=>{x},
None=>{/*从带有Err*/}的函数返回
});
}
}
这可能吗?或者我应该自己迭代
chars()
并在到达None
时返回一个错误吗?只是想知道是否有一种简单的方法可以突破映射并从函数返回这里有两条关键信息非常有用:
迭代器一次只操作一个项目,因此迭代器适配器将仅在某些东西正在使用迭代器时执行
(它为迭代器::collect
)提供动力)也为结果
实现
由于您没有提供,我编写了可以实际编译的示例代码:
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);
}
fn foo(输入:&[u8])->结果{
input.iter().map(|&i|{
如果i>127{
呃(())
}否则{
Ok(i+1)
}
}).collect()
}
fn main(){
设a=foo(&[1,2,3,4]);
设b=foo(&[200,1,2,3]);
println!(“{:?}”,a);
println!(“{:?}”,b);
}
如果你坚持一个println
在映射
正文中,您可以看到在200之后没有处理任何数字。您是否尝试返回Err(…无论如何)
?