ArcとVecのmutableエラー'cannot borrow as mutable'について
Vecをthreadで利用するコードを書いた所
cannot borrow as mutableとエラーが出ました。
エラーコード(E0596)にはmutが必要と書いてありますがmutはつけています。
どの様にすればエラーが取れますでしょうか?
use std::vec::Vec;
use std::sync::Arc;
use std::{thread,time};
fn main() {
let arc: Arc<Vec<i32>> = Arc::new(Vec::new());
let mut _arc = Arc::clone(&arc);
thread::spawn(move || {
for x in 1..=10 {
_arc.push(x);
}
});
thread::sleep(time::Duration::from_secs(3));
arc.iter().map(|n| println!("{:?}",n));
}
error[E0596]: cannot borrow data in a `&` reference as mutable
--> src/main.rs:11:13
|
11 | _arc.push(x);
| ^^^^ cannot borrow as mutable