own_or_borrow

Crates.ioown_or_borrow
lib.rsown_or_borrow
version0.1.0
sourcesrc
created_at2024-06-30 15:05:41.459054
updated_at2024-06-30 15:05:41.459054
descriptionUnified references to owned or RefCell borrowed data
homepagehttps://github.com/sunsided/own-or-borrow
repositoryhttps://github.com/sunsided/own-or-borrow
max_upload_size
id1288036
size31,393
Markus Mayer (sunsided)

documentation

README

Own or borrow your data.

GitHub Workflow Status codecov

This crate provides the OwnOrBorrow type that wraps either owned data or a RefCell borrowed reference to it. Think Cow for borrowing.

Examples

You can create an OwnOrBorrow from an owned value:

use own_or_borrow::OwnOrBorrow;

fn example() {
    let mut value = OwnOrBorrow::own(42);

    assert_eq!(value.borrow().as_ref(), &42);
    assert_eq!(value.borrow_mut().as_mut(), &mut 42);
}

You can create an OwnOrBorrow from a RefCell and treat it the same way:

use own_or_borrow::OwnOrBorrow;
use core::cell::RefCell;

fn example() {
    let refcell = RefCell::new(42);
    let mut value = OwnOrBorrow::from(refcell);

    assert_eq!(value.borrow().as_ref(), &42);
    assert_eq!(value.borrow_mut().as_mut(), &mut 42);
}
Commit count: 12

cargo fmt