Struct boa::gc::RefMut [−][src]
pub struct RefMut<'a, T, U = T> where
T: 'static + Trace + ?Sized,
U: ?Sized, { /* fields omitted */ }Expand description
A wrapper type for a mutably borrowed value from a GcCell<T>.
Implementations
pub fn map<V, F>(orig: GcCellRefMut<'a, T, U>, f: F) -> GcCellRefMut<'a, T, V> where
V: ?Sized,
F: FnOnce(&mut U) -> &mut V,
pub fn map<V, F>(orig: GcCellRefMut<'a, T, U>, f: F) -> GcCellRefMut<'a, T, V> where
V: ?Sized,
F: FnOnce(&mut U) -> &mut V,
Makes a new GcCellRefMut for a component of the borrowed data, e.g., an enum
variant.
The GcCellRefMut is already mutably borrowed, so this cannot fail.
This is an associated function that needs to be used as
GcCellRefMut::map(...). A method would interfere with methods of the same
name on the contents of a GcCell used through Deref.
Examples
use gc::{GcCell, GcCellRefMut};
let c = GcCell::new((5, 'b'));
{
let b1: GcCellRefMut<(u32, char)> = c.borrow_mut();
let mut b2: GcCellRefMut<(u32, char), u32> = GcCellRefMut::map(b1, |t| &mut t.0);
assert_eq!(*b2, 5);
*b2 = 42;
}
assert_eq!(*c.borrow(), (42, 'b'));