own-or-borrow

Unified references to owned or borrowed data.

EUPL-1.2 License

Downloads
509
Stars
0

Own or borrow your data.

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);
}
Package Rankings
Badges
Extracted from project README
Crates.io Crates.io docs.rs codecov