rust的Arc<Mutex<RefCell<struct>>>怎么访问impl函数?
时间: 2023-11-06 18:06:06 浏览: 53
如果你想从Arc<Mutex<RefCell<Struct>>>中访问Struct的impl函数,你可以使用以下代码:
```
use std::sync::{Arc, Mutex};
use std::cell::RefCell;
struct Struct {
value: i32,
}
impl Struct {
fn new(value: i32) -> Self {
Struct { value }
}
fn add(&mut self, value: i32) {
self.value += value;
}
}
fn main() {
let s = Arc::new(Mutex::new(RefCell::new(Struct::new(10))));
{
let mut s_ref = s.lock().unwrap();
let mut s_inner = s_ref.borrow_mut();
s_inner.add(5);
}
let s_ref = s.lock().unwrap();
let s_inner = s_ref.borrow();
println!("Value: {}", s_inner.value);
}
```
在这个例子中,我们创建了一个包含值的Struct,并将其放在Arc<Mutex<RefCell<Struct>>>中。接着,我们首先获取锁,然后获取可变引用,以便我们可以调用add函数来改变Struct的值。在完成修改后,我们释放锁并获取不可变引用,以便我们可以打印Struct的值。