Rust 在map中满足条件时从函数返回

Rust 在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) {

是否有一种方法可以使用map,以便在满足特定条件时返回错误?原因是我试图为我的struct
BigNum
实现trait
FromStr

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(…无论如何)