Crates.io | own_or_borrow |
lib.rs | own_or_borrow |
version | 0.1.0 |
source | src |
created_at | 2024-06-30 15:05:41.459054 |
updated_at | 2024-06-30 15:05:41.459054 |
description | Unified references to owned or RefCell borrowed data |
homepage | https://github.com/sunsided/own-or-borrow |
repository | https://github.com/sunsided/own-or-borrow |
max_upload_size | |
id | 1288036 |
size | 31,393 |
This crate provides the OwnOrBorrow
type that wraps either owned data or a RefCell
borrowed reference to it. Think Cow
for borrowing.
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);
}