SplitSlotStorage

Struct SplitSlotStorage 

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

Split slot storage implementation.

Separates slot layout (structural information) from payload data (remembered values), allowing layout changes without data loss.

Implementations§

Source§

impl SplitSlotStorage

Source

pub fn new() -> Self

Source§

impl SplitSlotStorage

Source

pub fn debug_dump_groups(&self) -> Vec<(usize, Key, Option<usize>, usize)>

Debug method to dump all groups.

Source

pub fn debug_dump_all_slots(&self) -> Vec<(usize, String)>

Debug method to dump all slots.

Trait Implementations§

Source§

impl Default for SplitSlotStorage

Source§

fn default() -> SplitSlotStorage

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

impl SlotStorage for SplitSlotStorage

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.