Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::thread;
- use std::sync::{RwLock,Arc};
- fn main() {
- let primes=Arc::new(RwLock::new(vec![2,3,5]));
- let primes2=primes.clone();
- let primes_w=primes.write().unwrap();
- let handle=thread::spawn(move || {
- let primes_r=primes2.read().unwrap();
- for i in &primes_r {
- println!("{:?}", i);
- }
- });
- primes_w.push(7);
- drop(primes_w);
- handle.join();
- }
- /*
- error[E0277]: the trait bound `&std::sync::RwLockReadGuard<'_, std::vec::Vec<{integer}>>: std::iter::Iterator` is not satisfied
- --> test.rs:9:3
- |
- 9 | for i in &primes_r {
- | ___^ starting here...
- 10 | | println!("{:?}", i);
- 11 | | }
- | |___^ ...ending here: the trait `std::iter::Iterator` is not implemented for `&std::sync::RwLockReadGuard<'_, std::vec::Vec<{integer}>>`
- |
- = note: `&std::sync::RwLockReadGuard<'_, std::vec::Vec<{integer}>>` is not an iterator; maybe try calling `.iter()` or a similar method
- = note: required by `std::iter::IntoIterator::into_iter`
- error: aborting due to previous error
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement