Skip to main content

BindingCell

Struct BindingCell 

Source
pub struct BindingCell { /* private fields */ }
Expand description

A reference-shared mutable binding slot captured from a lexical scope.

Cloned cells point at the same slot, so writes through one handle are visible through every other handle for the same lexical binding. Closure languages use this shape for boxed upvalues and closed-over mutable locals.

Implementations§

Source§

impl BindingCell

Source

pub fn uninitialized(name: Symbol) -> Self

Creates an uninitialized cell.

Source

pub fn initialized(name: Symbol, value: Value) -> Self

Creates an initialized mutable cell.

Source

pub fn immutable(name: Symbol, value: Value) -> Self

Creates an immutable initialized cell.

Source

pub fn live_alias(name: Symbol, target: BindingCell) -> Self

Creates a live alias which follows reads and writes to target.

Source

pub fn name(&self) -> &Symbol

Returns the binding name associated with this cell.

Source

pub fn get(&self) -> Result<Value>

Reads the cell’s current value.

Errors if the captured slot is still uninitialized.

Source

pub fn set(&self, value: Value) -> Result<()>

Replaces the cell’s current value.

Source

pub fn delete(&self) -> Result<()>

Deletes this cell. A deleted cell cannot be read or reinitialized.

Source

pub fn state(&self) -> Result<BindingCellState>

Returns a snapshot of the cell’s current state.

Trait Implementations§

Source§

impl Clone for BindingCell

Source§

fn clone(&self) -> BindingCell

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BindingCell

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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