Struct gc::GcCellRef[][src]

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

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

Implementations

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

pub fn clone(orig: &GcCellRef<'a, T>) -> GcCellRef<'a, T>[src]

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.

pub fn map<U, F>(orig: Self, f: F) -> GcCellRef<'a, U> where
    U: ?Sized,
    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, V, F>(
    orig: Self,
    f: F
) -> (GcCellRef<'a, U>, GcCellRef<'a, V>) where
    U: ?Sized,
    V: ?Sized,
    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: ?Sized + Debug> Debug for GcCellRef<'a, T>[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

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

type Target = T

The resulting type after dereferencing.

fn deref(&self) -> &T[src]

Dereferences the value.

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

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

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

fn drop(&mut self)[src]

Executes the destructor for this type. Read more

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]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

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

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

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

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

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

pub fn from(t: T) -> T[src]

Performs the conversion.

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

pub fn into(self) -> U[src]

Performs the conversion.

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

pub default fn to_string(&self) -> String[src]

Converts the given value to a String. Read more

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.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

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.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.