macro_rules! unborrow_all_unchecked {
((), (), $closure:expr $(,)?) => { ... };
(($cell:expr, $($cells:expr),+ $(,)?), (&$var:expr, $($vars:tt)+), $closure:expr $(,)?) => { ... };
(($cell:expr, $($cells:expr),+ $(,)?), (&mut $var:expr, $($vars:tt)+), $closure:expr $(,)?) => { ... };
(($($cells:expr),+ $(,)?), ($var:expr, $($vars:tt)+), $closure:expr $(,)?) => { ... };
(($cell:expr $(,)?), (&$var:expr $(,)?), $closure:expr $(,)?) => { ... };
(($cell:expr $(,)?), (&mut $var:expr $(,)?), $closure:expr $(,)?) => { ... };
(($cell:expr $(,)?), ($var:expr $(,)?), $closure:expr $(,)?) => { ... };
($cell:expr, &$var:expr, $closure:expr $(,)?) => { ... };
($cell:expr, &mut $var:expr, $closure:expr $(,)?) => { ... };
($cell:expr, $var:expr, $closure:expr $(,)?) => { ... };
(@error_no_prefix $var:expr) => { ... };
}Expand description
A macro to unborrow multiple instances at once, using either BetterRefCell::unborrow_unchecked or BetterRefCell::unborrow_ref_unchecked.
The references to be unborrowed must be explicitly prefixed with & or &mut and should align with the order of their respective sources.
ยงExamples
use better_refcell::{BetterRefCell, unborrow_all_unchecked};
let cell_1 = BetterRefCell::new(1);
let cell_2 = BetterRefCell::new(2);
let mut var_1 = cell_1.borrow_mut();
let mut var_2 = cell_2.borrow_mut();
unsafe {
unborrow_all_unchecked!((), (), move || {});
unborrow_all_unchecked!(&cell_1, &var_1, || {});
unborrow_all_unchecked!(&cell_1, &mut var_1, || {});
unborrow_all_unchecked!((&cell_1,), (&var_1), || {});
unborrow_all_unchecked!((&cell_1,), (&mut var_1), || {});
unborrow_all_unchecked!((&cell_1, &cell_2), (&var_1, &mut var_2), || {});
unborrow_all_unchecked!((&cell_1, &cell_2), (&mut var_1, &var_2), || {});
}