| Crates.io | better-refcell |
| lib.rs | better-refcell |
| version | 0.1.1 |
| created_at | 2025-05-20 15:09:04.037606+00 |
| updated_at | 2025-05-24 15:30:03.922879+00 |
| description | A drop-in replacement for RefCell with safe unborrow and reborrow capabilities. |
| homepage | |
| repository | https://github.com/haruleekim/better-refcell |
| max_upload_size | |
| id | 1681583 |
| size | 35,004 |
A drop-in replacement for RefCell with safe unborrow and reborrow capabilities.
Allows putting back a borrowed value and reborrowing it within a closure.
Fully compatible with the RefCell interface of the stable Rust standard library.
Zero dependencies.
use better_refcell::BetterRefCell;
use std::cell::*;
let cell = BetterRefCell::new(42);
let mut guard: RefMut<i32> = cell.borrow_mut();
let mut_reference: &mut i32 = &mut *guard;
let ret = cell.unborrow(mut_reference, || {
let mut guard = cell.borrow_mut();
assert_eq!(*guard, 42);
*guard += 1;
format!("Returns {guard}")
});
assert_eq!(*guard, 43);
assert_eq!(ret, "Returns 43");
This project is dual-licensed under either the MIT or Apache-2.0 license, at your option.