मैं कुछ कोड scoped_threadpool का उपयोग करता है इस तरह एक सा है:मैं scoped_threadpool थ्रेड से एक त्रुटि कैसे वापस कर सकता हूं?
extern crate scoped_threadpool;
use scoped_threadpool::Pool;
use std::error::Error;
fn main() {
inner_main().unwrap();
}
fn inner_main() -> Result<(), Box<Error>> {
let mut pool = Pool::new(2);
pool.scoped(|scope| {
scope.execute(move || {
// This changed to become fallible
fallible_code();
});
});
Ok(())
}
fn fallible_code() -> Result<(), Box<Error + Send + Sync>> {
Err(From::from("Failing"))
}
fallible_code
समारोह हाल ही में एक Result
वापस जाने के लिए बदल गया है, और मैं pool.scoped
ब्लॉक के बाहर त्रुटि का प्रचार करना चाहते हैं। हालांकि, Scope::execute
के हस्ताक्षर की वापसी मूल्य के लिए अनुमति नहीं देता:
fn execute<F>(&self, f: F)
where F: FnOnce() + Send + 'scope
मैं scoped_threadpool 0.1.7 का उपयोग कर रहा हूँ।
विचार अच्छा लगता है, लेकिन 'सिंक'' नहीं होना चाहिए? –
@MatthieuM। यह है, यही कारण है कि 'ret.map_err (| x | x बॉक्स के रूप में)' 'inner_main' के रिटर्न प्रकार से मेल खाने के लिए आवश्यक है। –
Veedrac