rccell

Crates.iorccell
lib.rsrccell
version0.1.3
sourcesrc
created_at2021-08-27 14:57:48.530544
updated_at2021-09-01 08:46:05.437688
descriptionA convenient wrapper for Rc>
homepagehttps://github.com/romancardenas/rccell
repositoryhttps://github.com/romancardenas/rccell.git
max_upload_size
id443126
size17,925
Román Cárdenas Rodríguez (romancardenas)

documentation

README

RcCell

A convenient wrapper for Rc<RefCell<T>>> and Weak<RefCell<T>>>.

The RcCell library adds two new structs:

  • RcCell<T>: a wrapper for Rc<RefCell<T>>.
  • WeakCell<T>: a wrapper for Weak<RefCell<T>>.

This library extends the rc-cell library.

Example

use rccell::{RcCell, WeakCell};

let a = RcCell::new(1);     // a is a RcCell that wraps an Rc<RefCell<i32>>
let b = a.clone();          // You can create multiple RcCells pointing to the same data.

let mut c = a.borrow_mut();  // You can use borrow and borrow_mut methods as if  RcCells were RefCells
*c = 2;
// let mut d = b.borrow_mut()   You cannot create two RefMuts for the same RcCell.
drop(c);

assert!(a.try_borrow().is_ok());  // You can use try_borrow and try_borrow_mut to avoid panicking
// let d = a.unwrap()  You can use unwrap to get the inner value (if there is only one RcCell)
assert!(a.try_unwrap().is_err());  // You can use try_unwrap to avoid panicking

let d: WeakCell<i32> = b.downgrade();  // Use downgrade to create a WeakCell pointing to the same data
assert!(d.upgrade().is_some());  // Use the upgrade method to get a RcCell pointing to the same data as the WeakCell.
Commit count: 6

cargo fmt