我有一把锁着的a
,里面有一个B
struct 的矢量.我想在不克隆B
struct 的情况下过滤a.b
.在铁 rust 中有可能吗?
use std::sync::{Arc, Mutex};
#[derive(Debug)]
struct B {
n: i64,
}
#[derive(Debug)]
struct A {
b: Vec<B>
}
fn main() {
let arc_a = Arc::new(Mutex::new(A {
b: vec![
B { n: 1 },
B { n: 2 },
B { n: 3 },
B { n: 4 },
]
}));
let mut a = arc_a.lock().unwrap();
a.b = a.b.into_iter().filter(|b| b.n % 2 == 1).collect();
println!("{:?}", a);
}
在上面的代码示例中,我有一个错误error[E0507]: cannot move out of dereference of MutexGuard<'_, A>
.有没有办法解决这一挑战?如何正确地解决这个问题?