View difference between Paste ID: 3Jx9c2ds and 9reBgEks
SHOW: | | - or go back to the newest paste.
1
use std::thread;
2
use std::sync::{RwLock,Arc};
3
fn main() {
4
	let primes=Arc::new(RwLock::new(vec![2,3,5]));
5
	let primes2=primes.clone();
6
	let primes_w=primes.write().unwrap();
7
	let handle=thread::spawn(move || {
8
		let primes_r=primes2.read().unwrap();
9
		for i in &primes_r {
10
			println!("{:?}", i);
11
		}
12
	});
13
	primes_w.push(7);
14
	drop(primes_w);
15
	handle.join();
16-
}
16+
}
17
18
/*
19
error[E0277]: the trait bound `&std::sync::RwLockReadGuard<'_, std::vec::Vec<{integer}>>: std::iter::Iterator` is not satisfied
20
  --> test.rs:9:3
21
   |
22
9  |            for i in &primes_r {
23
   |  ___^ starting here...
24
10 | |                  println!("{:?}", i);
25
11 | |          }
26
   | |___^ ...ending here: the trait `std::iter::Iterator` is not implemented for `&std::sync::RwLockReadGuard<'_, std::vec::Vec<{integer}>>`
27
   |
28
   = note: `&std::sync::RwLockReadGuard<'_, std::vec::Vec<{integer}>>` is not an iterator; maybe try calling `.iter()` or a similar method
29
   = note: required by `std::iter::IntoIterator::into_iter`
30
31
error: aborting due to previous error
32
*/