当使用 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 追加到了数据中。注意,这里只是演示了如何修改共享数据,实际应用中可能需要更复杂的逻辑来处理数据。