如何在Rust中对管道式方法调用进行集中式错误处理?

我想执行json解析并将结果保存到Hash Set中。我想使用iter(),比如。

let my_json_list = vec!("{\"name\":\"Tim\", \"age\":18}", "{\"name\":\"Alex\", \"age\":25}")
let mut my_hash_set::HashSet<String> = HashSet::new();
my_hash_set.extend(
            my_json_list.iter()
                        .map(|str| serde_json::from_str(str)) // return Result
                        .map(|json| json.pointer("/name") // return Option
                        .when_err_or_none(|err| skip();) // handle Err and None, not extend the map
                        .map(|key| key.as_str().unwrap().to_owned())
) 

这可能吗?

解决方案:

let my_json_list = vec![
    "{\"name\":\"Tim\", \"age\":18}",
    "{\"name\":\"Alex\", \"age\":25}",
];
let mut my_hash_set: HashSet<String> = HashSet::new();
my_hash_set.extend(
    my_json_list
        .iter()
        .map(|str| serde_json::from_str::<Value>(str))
        .filter(|result| result.is_ok())
        .map(|result| result.unwrap())
        .filter(|json| json["name"].is_string())
        .map(|json| json["name"].as_str().unwrap().to_string()),
);

这是你想要的吗?

给TA打赏
共{{data.count}}人
人已打赏
未分类

App Engine Flexible Environment - Dockerfile安装了GDAL的过时版本。

2022-9-8 21:38:39

未分类

按地点查询数据库 - 建议?

2022-9-8 21:38:41

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索