[][src]Struct gc::GcCellRef

pub struct GcCellRef<'a, T: Trace + ?Sized + 'static> { /* fields omitted */ }

A wrapper type for an immutably borrowed value from a GcCell<T>.

Implementations

impl<'a, T: Trace + ?Sized> GcCellRef<'a, T>[src]

pub fn map<U: ?Sized, F>(orig: Self, f: F) -> GcCellRef<'a, U> where
    U: Trace,
    F: FnOnce(&T) -> &U, 
[src]

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);

pub fn map_split<U: ?Sized, V: ?Sized, F>(
    orig: Self,
    f: F
) -> (GcCellRef<'a, U>, GcCellRef<'a, V>) where
    U: Trace,
    V: Trace,
    F: FnOnce(&T) -> (&U, &V)
[src]

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');

Trait Implementations

impl<'a, T: Trace + ?Sized + Debug> Debug for GcCellRef<'a, T>[src]

impl<'a, T: Trace + ?Sized> Deref for GcCellRef<'a, T>[src]

type Target = T

The resulting type after dereferencing.

impl<'a, T: Trace + ?Sized + Display> Display for GcCellRef<'a, T>[src]

impl<'a, T: Trace + ?Sized> Drop for GcCellRef<'a, T>[src]

Auto Trait Implementations

impl<'a, T> !RefUnwindSafe for GcCellRef<'a, T>

impl<'a, T> !Send for GcCellRef<'a, T>

impl<'a, T> !Sync for GcCellRef<'a, T>

impl<'a, T: ?Sized> Unpin for GcCellRef<'a, T>

impl<'a, T> !UnwindSafe for GcCellRef<'a, T>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.