当使用 Arc
共享数据时,Rust 默认不允许修改共享数据。因此,如果需要修改 Arc
中的数据,需要使用 Mutex
等线程安全的机制来进行修改。示例如下:
use std::sync::{Arc, Mutex};
fn main() {
let data = Arc::new(Mutex::new(vec![1, 2, 3]));
let mut shared_data = data.lock().unwrap();
shared_data.push(4);
}
此处,我们创建了一个 Arc
,其中包含一个 Mutex
,并将其赋值给 data
。在修改数据时,我们需要先获取 Mutex
的锁,再对数据进行修改。使用 unwrap
获取锁可以快速得到一个 &mut T
类型的可变引用,从而对数据进行修改。此处,我们将 4 追加到了数据中。注意,这里只是演示了如何修改共享数据,实际应用中可能需要更复杂的逻辑来处理数据。