Struct gc::GcCell[][src]

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

A mutable memory location with dynamically checked borrow rules that can be used inside of a garbage-collected pointer.

This object is a RefCell that can be used inside of a Gc<T>.

Implementations

impl<T: Trace> GcCell<T>[src]

pub fn new(value: T) -> Self[src]

Creates a new GcCell containing value.

pub fn into_inner(self) -> T[src]

Consumes the GcCell, returning the wrapped value.

impl<T: Trace + ?Sized> GcCell<T>[src]

pub fn borrow(&self) -> GcCellRef<'_, T>[src]

Immutably borrows the wrapped value.

The borrow lasts until the returned GcCellRef exits scope. Multiple immutable borrows can be taken out at the same time.

Panics

Panics if the value is currently mutably borrowed.

pub fn borrow_mut(&self) -> GcCellRefMut<'_, T>[src]

Mutably borrows the wrapped value.

The borrow lasts until the returned GcCellRefMut exits scope. The value cannot be borrowed while this borrow is active.

Panics

Panics if the value is currently borrowed.

pub fn try_borrow(&self) -> Result<GcCellRef<'_, T>, BorrowError>[src]

Immutably borrows the wrapped value, returning an error if the value is currently mutably borrowed.

The borrow lasts until the returned GcCellRef exits scope. Multiple immutable borrows can be taken out at the same time.

This is the non-panicking variant of borrow.

Examples

use gc::GcCell;

let c = GcCell::new(5);

{
    let m = c.borrow_mut();
    assert!(c.try_borrow().is_err());
}

{
    let m = c.borrow();
    assert!(c.try_borrow().is_ok());
}

pub fn try_borrow_mut(&self) -> Result<GcCellRefMut<'_, T>, BorrowMutError>[src]

Mutably borrows the wrapped value, returning an error if the value is currently borrowed.

The borrow lasts until the returned GcCellRefMut exits scope. The value cannot be borrowed while this borrow is active.

This is the non-panicking variant of borrow_mut.

Examples

use gc::GcCell;

let c = GcCell::new(5);

{
    let m = c.borrow();
    assert!(c.try_borrow_mut().is_err());
}

assert!(c.try_borrow_mut().is_ok());

Trait Implementations

impl<T: Trace + Clone> Clone for GcCell<T>[src]

fn clone(&self) -> Self[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl<T: Trace + ?Sized + Debug> Debug for GcCell<T>[src]

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

Formats the value using the given formatter. Read more

impl<T: Trace + Default> Default for GcCell<T>[src]

fn default() -> Self[src]

Returns the “default value” for a type. Read more

impl<T: Trace + ?Sized> Finalize for GcCell<T>[src]

fn finalize(&self)[src]

impl<T: Trace + ?Sized + Ord> Ord for GcCell<T>[src]

fn cmp(&self, other: &GcCell<T>) -> Ordering[src]

This method returns an Ordering between self and other. Read more

#[must_use]
fn max(self, other: Self) -> Self
1.21.0[src]

Compares and returns the maximum of two values. Read more

#[must_use]
fn min(self, other: Self) -> Self
1.21.0[src]

Compares and returns the minimum of two values. Read more

#[must_use]
fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]

Restrict a value to a certain interval. Read more

impl<T: Trace + ?Sized + PartialEq> PartialEq<GcCell<T>> for GcCell<T>[src]

fn eq(&self, other: &Self) -> bool[src]

This method tests for self and other values to be equal, and is used by ==. Read more

#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests for !=.

impl<T: Trace + ?Sized + PartialOrd> PartialOrd<GcCell<T>> for GcCell<T>[src]

fn partial_cmp(&self, other: &Self) -> Option<Ordering>[src]

This method returns an ordering between self and other values if one exists. Read more

fn lt(&self, other: &Self) -> bool[src]

This method tests less than (for self and other) and is used by the < operator. Read more

fn le(&self, other: &Self) -> bool[src]

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

fn gt(&self, other: &Self) -> bool[src]

This method tests greater than (for self and other) and is used by the > operator. Read more

fn ge(&self, other: &Self) -> bool[src]

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl<T: Trace + ?Sized> Trace for GcCell<T>[src]

unsafe fn trace(&self)[src]

Marks all contained Gcs.

unsafe fn root(&self)[src]

Increments the root-count of all contained Gcs.

unsafe fn unroot(&self)[src]

Decrements the root-count of all contained Gcs.

fn finalize_glue(&self)[src]

Runs Finalize::finalize() on this object and all contained subobjects Read more

impl<T: Trace + ?Sized + Eq> Eq for GcCell<T>[src]

impl<T: ?Sized + Send> Send for GcCell<T>[src]

Auto Trait Implementations

impl<T> !RefUnwindSafe for GcCell<T>

impl<T> !Sync for GcCell<T>

impl<T: ?Sized> Unpin for GcCell<T> where
    T: Unpin

impl<T: ?Sized> UnwindSafe for GcCell<T> where
    T: UnwindSafe

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> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

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

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. 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.