首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何找到正确的组合子来使这段代码与rayon一起工作?

我如何找到正确的组合子来使这段代码与rayon一起工作?
EN

Stack Overflow用户
提问于 2020-05-22 20:09:56
回答 1查看 40关注 0票数 0

我想更改以下代码,以避免使用.unwrap或.expect:

代码语言:javascript
复制
thread::scope(|s| {
    for name in names {
        s.spawn(move |_| {
            let path_to_file = format!("{}{}", base, name.as_str());
            let path_to_file_written = format!("{}{}", guichetout, name.as_str());
            write_file(path_to_file.as_str(), name.as_str(), guichetout)
                .expect("cannot write data");
            log_hash(&path_to_file_written)
                .expect("Cannot write hash !");
        });
    }
})
.unwrap();

我目前使用的是crossbeam_utils::thread,我正在考虑改用人造丝。因此,我需要将此代码更改为具有各种组合子的迭代器。我尝试了很多方法,但都不能正常工作。所以如果有人能帮我,那就太好了。

EN

回答 1

Stack Overflow用户

发布于 2020-06-11 05:43:55

  1. 将最里面的代码移动到一个函数中,这样你就可以很容易地返回Result并使用?运算符来处理错误。
  2. 使用一个通道(std的mpsc通道或crossbeam的更快的通道)来发回结果。if let Err(e) = fallible() { channel.send(e) }。在另一个线程上,您可以读取该通道并查看是否收到错误,或者通道已关闭而没有错误到达(成功)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61954738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档