< 返回版块

ywxt 发表于 2020-03-21 17:06

Tags:错误处理, Result

代码大概是这样的:

fn fxxk()->Result<HashMap<String,String>> {
   list.map(|item|{
     //这儿是把item转换为一个二元组,但是可能会出错,如何在出错之后终止迭代并返回Result<_>
   }).collect()
}

可以不用循环吗?

评论区

写评论
作者 ywxt 2020-03-22 17:14

多谢,文档看得不够认真 对以下内容的回复:

作者 ywxt 2020-03-22 17:11

多谢大佬。 对以下内容的回复:

dojiong 2020-03-22 10:59

https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.collect

use std::collections::HashMap;

#[derive(Debug)]
struct NumErr;

fn main() {
    let v: Vec<i32> = (0..5).collect();
    let m: Result<HashMap<i32, i32>, NumErr> = v
        .into_iter()
        .map(|n| if n < 5 { Ok((n, n * n)) } else { Err(NumErr) })
        .collect();
    println!("{:?}", m);
}
彭亚伦 2020-03-21 19:35

用std::iter::Iterator 迭代器 trait的的take_while()函数

take_while() takes a closure as an argument. It will call this closure on each element of the iterator, and yield elements while it returns true.

After false is returned, take_while()'s job is over, and the rest of the elements are ignored.

简单的说,这个函数当里面的闭包结果为false时终止迭代。

1 共 4 条评论, 1 页