pub struct Ref<'a, T>where
T: 'static + ?Sized,{ /* private fields */ }Expand description
A wrapper type for an immutably borrowed value from a GcCell<T>.
Implementations§
Source§impl<'a, T> GcCellRef<'a, T>where
T: ?Sized,
impl<'a, T> GcCellRef<'a, T>where
T: ?Sized,
Sourcepub fn clone(orig: &GcCellRef<'a, T>) -> GcCellRef<'a, T>
pub fn clone(orig: &GcCellRef<'a, T>) -> GcCellRef<'a, T>
Copies a GcCellRef.
The GcCell is already immutably borrowed, so this cannot fail.
This is an associated function that needs to be used as
GcCellRef::clone(...). A Clone implementation or a method
would interfere with the use of c.borrow().clone() to clone
the contents of a GcCell.
Sourcepub fn map<U, F>(orig: GcCellRef<'a, T>, f: F) -> GcCellRef<'a, U>
pub fn map<U, F>(orig: GcCellRef<'a, T>, f: F) -> GcCellRef<'a, U>
Makes a new GcCellRef from a component of the borrowed data.
The GcCell is already immutably borrowed, so this cannot fail.
This is an associated function that needs to be used as GcCellRef::map(...).
A method would interfere with methods of the same name on the contents
of a GcCellRef used through Deref.
§Examples
use gc::{GcCell, GcCellRef};
let c = GcCell::new((5, 'b'));
let b1: GcCellRef<(u32, char)> = c.borrow();
let b2: GcCellRef<u32> = GcCellRef::map(b1, |t| &t.0);
//assert_eq!(b2, 5);Sourcepub fn map_split<U, V, F>(
orig: GcCellRef<'a, T>,
f: F,
) -> (GcCellRef<'a, U>, GcCellRef<'a, V>)
pub fn map_split<U, V, F>( orig: GcCellRef<'a, T>, f: F, ) -> (GcCellRef<'a, U>, GcCellRef<'a, V>)
Splits a GcCellRef into multiple GcCellRefs for different components of the borrowed data.
The GcCell is already immutably borrowed, so this cannot fail.
This is an associated function that needs to be used as GcCellRef::map_split(…).
A method would interfere with methods of the same name on the contents of a GcCellRef used through Deref.
§Examples
use gc::{GcCell, GcCellRef};
let cell = GcCell::new((1, 'c'));
let borrow = cell.borrow();
let (first, second) = GcCellRef::map_split(borrow, |x| (&x.0, &x.1));
assert_eq!(*first, 1);
assert_eq!(*second, 'c');