Struct Scope Stack

View as Markdown

Generated from cargo doc --no-deps -p nemo-relay -p nemo-relay-adaptive -p nemo-relay-ffi.

1pub struct ScopeStack { /* private fields */ }

Mutable stack of active scopes plus their scope-local registries.

The stack always contains an implicit root scope. Additional scopes are pushed as the public API opens lifecycle spans and removed when those spans close.

Implementations

impl ScopeStack

impl ScopeStack

new

pub fn new() -> Self

Create a new scope stack containing only the implicit root scope.

Returns

A ScopeStack initialized with a single root scope and no scope-local registries.

push

pub fn push(&mut self, handle: ScopeHandle)

Push a scope handle onto the top of the stack.

Parameters
  • handle: Scope handle to make the new top-most active scope.

top

pub fn top(&self) -> &ScopeHandle

Return the current top-most scope handle.

Returns

A shared reference to the active scope at the top of the stack.

Notes

This function never returns None because the implicit root scope is always present.

top_mut

pub fn top_mut(&mut self) -> &mut ScopeHandle

Return the current top-most scope handle mutably.

Returns

A mutable reference to the active scope at the top of the stack.

root_uuid

pub fn root_uuid(&self) -> Uuid

Return the UUID of the implicit root scope.

Returns

The stable UUID of the root scope stored at the bottom of the stack.

scopes

pub fn scopes(&self) -> &[ScopeHandle]

Return the full ordered stack of scope handles.

Returns

A slice of scopes ordered from root to the current top-most scope.

find

pub fn find(&self, uuid: &Uuid) -> Option<&ScopeHandle>

Find a scope handle by UUID.

Parameters
  • uuid: UUID of the scope to search for.
Returns

Some(&ScopeHandle) when the scope is active on this stack and None otherwise.

remove

pub fn remove(&mut self, uuid: &Uuid) -> Result<ScopeHandle>

Remove the current top scope if it matches uuid.

Parameters
  • uuid: UUID of the scope expected to be at the top of the stack.
Returns

A Result containing the removed ScopeHandle.

Errors

Returns FlowError::InvalidArgument when the scope exists but is not the current top of the stack or when the caller attempts to remove the implicit root scope. Returns FlowError::NotFound when the UUID is not present on the stack.

Trait Implementations

impl Debug for ScopeStack

impl Debug for ScopeStack

fmt

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

impl Default for ScopeStack

impl Default for ScopeStack

default

fn default() -> Self