我想从一个受a保护的函数返回一个值Mutex,但是无法理解如何正确地执行它.此代码不起作用:
use std::sync::{Arc, Mutex};
fn func() -> Result<(), String> {
let result_my = Arc::new(Mutex::new(Ok(())));
let result_his = result_my.clone();
let t = std::thread::spawn(move || {
let mut result = result_his.lock().unwrap();
*result = Err("something failed".to_string());
});
t.join().expect("Unable to join thread");
let guard = result_my.lock().unwrap();
*guard
}
fn main() {
println!("func() -> {:?}", func());
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨:
error[E0507]: cannot move out of borrowed content
--> src/main.rs:16:5
|
16 | *guard
| ^^^^^^ cannot move out of borrowed content
Run Code Online (Sandbox Code Playgroud) rust ×1