我想更改以下代码,以避免使用.unwrap或.expect:
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,并且正在考虑切换到人造丝。因此,我需要将此代码更改为具有各种组合器的迭代器。
我已经尝试了很多东西,但是没有任何正常工作。因此,如果有人可以帮助我,那就太好了。
最佳答案
Result
并使用?
运算符处理错误。 mpsc
channel 或crossbeam的更快的 channel )将结果发送回去。 if let Err(e) = fallible() { channel.send(e) }
。在另一个线程上,您可以从该 channel 读取并查看是否出错,或者 channel 是否关闭而没有错误到达(成功)。 关于rust - 如何找到合适的组合器以使此代码与rayon一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61954738/