Skip to main content

GcCell

Struct GcCell 

Source
pub struct GcCell<T> { /* private fields */ }
Expand description

GcCell is a zero-overhead memory cell that provides interior mutability for garbage collected types.

Mutable access to the value inside the GcCell is granted by delivering proof that the caller has mutable access to the V8 Isolate (such as through a HandleScope). This statically guarantees that access patterns follow the rules of both the garbage collector and the Rust borrow checker.

GcCell also implements Traced, which means that it can hold other garbage collected references, like Member or WeakMember. If the GcCell holds other garbage collected objects, those objects cannot be accessed while the GcCell is borrowed, and the caller must construct temporary pointers (UnsafePtr<T>) on the stack in order to access nested objects in the object graph.

Implementations§

Source§

impl<T> GcCell<T>

Source

pub fn new(value: T) -> Self

Source

pub fn set(&self, isolate: &mut Isolate, value: T)

Source§

impl<T> GcCell<T>

Source

pub fn get<'a>(&'a self, isolate: &'a Isolate) -> &'a T

Source

pub fn get_mut<'a>(&'a self, isolate: &'a mut Isolate) -> &'a mut T

Source

pub fn with<'a, 's, R>( &'a self, scope: &'a mut HandleScope<'s>, f: impl FnOnce(&'a mut HandleScope<'s>, &'a mut T) -> R, ) -> R

Trait Implementations§

Source§

impl<T> Debug for GcCell<T>

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<T: Traced> Traced for GcCell<T>

Source§

fn trace(&self, visitor: &mut Visitor)

Called by the Visitor when tracing managed objects.
Source§

impl<T: Send> Send for GcCell<T>

Source§

impl<T: Sync> Sync for GcCell<T>

Auto Trait Implementations§

§

impl<T> !Freeze for GcCell<T>

§

impl<T> !RefUnwindSafe for GcCell<T>

§

impl<T> Unpin for GcCell<T>
where T: Unpin,

§

impl<T> UnsafeUnpin for GcCell<T>
where T: UnsafeUnpin,

§

impl<T> UnwindSafe for GcCell<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

impl<T> ErasedDestructor for T
where T: 'static,