Advertisement
mwchase

LC:NN upload 6: interior mutability

Apr 9th, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 1.15 KB | None | 0 0
  1. --- a/rust/q_sequence/src/main.rs
  2. +++ b/rust/q_sequence/src/main.rs
  3. @@ -11,7 +11,7 @@
  4.      }
  5.  }
  6.  
  7. -fn q(mapping: &mut Arc<RwLock<HashMap<i32, Arc<RwLock<i32>>>>>, key: i32) -> i32 {
  8. +fn q(mapping: Arc<RwLock<HashMap<i32, Arc<RwLock<i32>>>>>, key: i32) -> i32 {
  9.      println!("Running for {:?}", key);
  10.      {
  11.          match mapping.read().unwrap().get(&key) {
  12. @@ -33,9 +33,9 @@
  13.              println!("Inserted for {:?}", key);
  14.          }
  15.          {
  16. -            let mut _mapping = mapping.clone();
  17. +            let _mapping = mapping.clone();
  18.              thread::spawn(move || {
  19. -                q(&mut _mapping, key - 1);
  20. +                q(_mapping, key - 1);
  21.              });
  22.          }
  23.          {
  24. @@ -53,7 +53,7 @@
  25.      let mut mapping = HashMap::new();
  26.      mapping.insert(1, Arc::new(RwLock::new(1)));
  27.      mapping.insert(2, Arc::new(RwLock::new(1)));
  28. -    let mut mapping = Arc::new(RwLock::new(mapping));
  29. -    println!("{:?}", q(&mut mapping, 10));
  30. -    println!("{:?}", q(&mut mapping, 10));
  31. +    let mapping = Arc::new(RwLock::new(mapping));
  32. +    println!("{:?}", q(mapping.clone(), 10));
  33. +    println!("{:?}", q(mapping.clone(), 10));
  34.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement