Skip to main content

MemoryApplier

Struct MemoryApplier 

Source
pub struct MemoryApplier { /* private fields */ }

Implementations§

Source§

impl MemoryApplier

Source

pub fn new() -> Self

Source

pub fn slots(&mut self) -> &mut SlotTable

Source

pub fn take_structural_change_parents_attached_to( &mut self, root: NodeId, ) -> Vec<NodeId>

Drains the parents recorded via Applier::record_structural_change, keeping only nodes still attached to root (a parent that was itself removed is covered by its own surviving ancestor’s record). A virtual parent — a subcompose slot wrapper the render graph never contains — is reported as its nearest non-virtual ancestor: that is the node whose graph child set the change altered, and an id the graph cannot resolve would force the scoped scene update to give up and rebuild.

Source

pub fn with_node<N: Node + 'static, R>( &mut self, id: NodeId, f: impl FnOnce(&mut N) -> R, ) -> Result<R, NodeError>

Source

pub fn len(&self) -> usize

Source

pub fn capacity(&self) -> usize

Source

pub fn tombstone_count(&self) -> usize

Source

pub fn freelist_len(&self) -> usize

Source

pub fn debug_recycled_node_count(&self) -> usize

Source

pub fn debug_recycled_node_count_for<N: Node + 'static>(&self) -> usize

Source

pub fn debug_stats(&self) -> MemoryApplierDebugStats

Source

pub fn is_empty(&self) -> bool

Source

pub fn debug_live_node_heap_bytes(&self) -> usize

Source

pub fn debug_recycled_node_heap_bytes(&self) -> usize

Source

pub fn set_runtime_handle(&mut self, handle: RuntimeHandle)

Source

pub fn clear_runtime_handle(&mut self)

Source

pub fn runtime_handle(&self) -> Option<RuntimeHandle>

Source

pub fn dump_tree(&self, root: Option<NodeId>) -> String

Trait Implementations§

Source§

impl Applier for MemoryApplier

Source§

fn record_structural_change(&mut self, parent_id: NodeId)

Records that parent_id’s child list changed structurally this frame (insert, remove, move, or reparent). Incremental scene consumers drain the recorded parents and re-patch those subtrees so removed nodes are evicted from a persistent render graph even when the frame’s scene update is otherwise scoped to unrelated dirty nodes.
Source§

fn create(&mut self, node: Box<dyn Node>) -> NodeId

Source§

fn node_generation(&self, id: NodeId) -> u32

Returns the current generation for a node index. Generation is incremented when an index is reused from the freelist, preventing stale slot entries from matching recycled nodes.
Source§

fn get_mut(&mut self, id: NodeId) -> Result<&mut dyn Node, NodeError>

Source§

fn remove(&mut self, id: NodeId) -> Result<(), NodeError>

Source§

fn insert_with_id( &mut self, id: NodeId, node: Box<dyn Node>, ) -> Result<(), NodeError>

Inserts a node with a pre-assigned ID. Read more
Source§

fn insert_recycled_node_or_create( &mut self, stable_id: NodeId, node: Box<dyn Node>, ) -> RecycledNodeInsertion

Reinserts a recycled node at its retained stable ID, or creates a fresh ID if that retained ID is no longer available.
Source§

fn compact(&mut self)

Trim trailing tombstones/unused capacity after structural changes.
Source§

fn take_recycled_node(&mut self, key: TypeId) -> Option<RecycledNode>

Returns a previously recycled node shell and its stable ID for the requested concrete type.
Source§

fn set_recycled_node_origin(&mut self, id: NodeId, warm_origin: bool)

Marks whether a reinserted recycled node originated from the warm recycle path.
Source§

fn seed_recycled_node_shell( &mut self, key: TypeId, recycle_pool_limit: Option<usize>, shell: Box<dyn Node>, )

Seeds a warm recyclable shell for future reuse without requiring a prior removal.
Source§

fn record_fresh_recyclable_creation(&mut self, key: TypeId)

Records that the current apply pass had to allocate a fresh recyclable shell for this type.
Source§

fn clear_recycled_nodes(&mut self)

Drops any recyclable shells that should not survive beyond the current apply pass.
Source§

fn as_any(&self) -> &dyn Any
where Self: Sized,

Source§

fn as_any_mut(&mut self) -> &mut dyn Any
where Self: Sized,

Source§

impl Default for MemoryApplier

Source§

fn default() -> MemoryApplier

Returns the “default value” for a type. 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> 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 = !

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.