SlotBackend

Enum SlotBackend 

Source
pub enum SlotBackend {
    Baseline(SlotTable),
    Chunked(ChunkedSlotStorage),
    Hierarchical(HierarchicalSlotStorage),
    Split(SplitSlotStorage),
}
Expand description

Unified slot storage backend that can use any implementation.

Variants§

Implementations§

Source§

impl SlotBackend

Source

pub fn new(kind: SlotBackendKind) -> Self

Create a new backend of the specified kind.

NOTE: Currently, all backend kinds map to the Baseline implementation since the experimental backends (Chunked, Hierarchical, Split) are still under development and don’t pass all tests. This allows the backend infrastructure to exist while development continues.

Source§

impl SlotBackend

Trait Implementations§

Source§

impl Default for SlotBackend

Source§

fn default() -> Self

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

impl SlotStorage for SlotBackend

Source§

type Group = GroupId

Opaque handle to a started group.
Source§

type ValueSlot = ValueSlotId

Opaque handle to a value slot.
Source§

fn begin_group(&mut self, key: Key) -> StartGroup<Self::Group>

Begin a group with the given key. Read more
Source§

fn set_group_scope(&mut self, group: Self::Group, scope: usize)

Associate the runtime recomposition scope with this group.
Source§

fn end_group(&mut self)

End the current group.
Source§

fn skip_current_group(&mut self)

Skip over the current group (used by the “skip optimization” in the macro).
Source§

fn nodes_in_current_group(&self) -> Vec<NodeId>

Return node ids that live in the current group (needed so the composer can reattach them to the parent when skipping).
Source§

fn begin_recranpose_at_scope(&mut self, scope: usize) -> Option<Self::Group>

Start recomposing the group that owns scope. Returns the group we started, or None if that scope is gone.
Source§

fn end_recompose(&mut self)

Finish the recomposition started with begin_recranpose_at_scope.
Source§

fn alloc_value_slot<T: 'static>( &mut self, init: impl FnOnce() -> T, ) -> Self::ValueSlot

Allocate or reuse a value slot at the current cursor.
Source§

fn read_value<T: 'static>(&self, slot: Self::ValueSlot) -> &T

Immutable read of a value slot.
Source§

fn read_value_mut<T: 'static>(&mut self, slot: Self::ValueSlot) -> &mut T

Mutable read of a value slot.
Source§

fn write_value<T: 'static>(&mut self, slot: Self::ValueSlot, value: T)

Overwrite an existing value slot.
Source§

fn remember<T: 'static>(&mut self, init: impl FnOnce() -> T) -> Owned<T>

Convenience “remember” built on top of value slots.
Source§

fn peek_node(&self) -> Option<NodeId>

Peek a node at the current cursor (don’t advance).
Source§

fn record_node(&mut self, id: NodeId)

Record a node at the current cursor (and advance).
Source§

fn advance_after_node_read(&mut self)

Advance after we’ve read a node via the applier path.
Source§

fn step_back(&mut self)

Step the cursor back by one (used when we probed and need to overwrite).
Source§

fn finalize_current_group(&mut self) -> bool

“Finalize” the current group: mark unreachable tail as gaps. Returns true if we marked gaps (which means children are unstable).
Source§

fn reset(&mut self)

Reset to the beginning (used by subcompose + top-level render).
Source§

fn flush(&mut self)

Flush any deferred anchor rebuilds.

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> 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.