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 | */ |