#rc #refcell #utility

rcrefcell

Wrapper type for Rc<RefCell<A>>

8 stable releases

1.0.7 Jul 16, 2022
1.0.6 Jun 1, 2022
1.0.5 May 31, 2022

#413 in Rust patterns

Download history 27/week @ 2022-12-06 12/week @ 2022-12-13 13/week @ 2022-12-20 21/week @ 2022-12-27 28/week @ 2023-01-03 37/week @ 2023-01-10 23/week @ 2023-01-17 18/week @ 2023-01-24 17/week @ 2023-01-31 26/week @ 2023-02-07 54/week @ 2023-02-14 34/week @ 2023-02-21 18/week @ 2023-02-28 24/week @ 2023-03-07 16/week @ 2023-03-14 52/week @ 2023-03-21

111 downloads per month

Custom license

4KB
94 lines

rcrefcell

Simple wrapper for Rc<RefCell<A>>

Example

#[derive(Debug, PartialEq)]
struct Data<A> {
  value: A
}

impl<A> Data<A> {
  fn new(value: A) -> Data<A> {
    Data {
      value,
    }
  }
}
  
let data: Data<i32> = Data::new(1);

let counter: RcCell<Data<i32>> = RcCell::new(data);
let counter_a: RcCell<Data<i32>> = counter.clone();
let counter_b: RcCell<Data<i32>> = counter.clone();

counter_a.update(|mut v| v.value += 1);
counter_b.borrow_mut().value *= 3;

assert_eq!(counter.borrow().value, 6);
assert_eq!(*counter_a.borrow(), *counter_b.borrow());

No runtime deps