Skip to main content

ManagedNode

Struct ManagedNode 

Source
pub struct ManagedNode<R> { /* private fields */ }
Expand description

Shared language-neutral arena, node, edge, and retention building blocks. A role-bearing managed object with stable, ordered strong edges.

Edge storage and identity allocation are deliberately private. Callers can mutate the graph only through checked operations, so identities are never reused and compare-and-mutate failures leave the node unchanged.

Implementations§

Source§

impl<R> ManagedNode<R>

Source

pub const fn new(role: R) -> ManagedNode<R>

Constructs an empty node carrying caller-owned role evidence.

Source

pub const fn with_edge_limits(role: R, limits: EdgeLimits) -> ManagedNode<R>

Constructs an empty node with explicit total and per-kind hard caps.

Source

pub fn edge_snapshot(&self) -> Vec<EdgeSnapshot>

Returns an allocation-ordered copy of every live outgoing edge.

Source

pub const fn role(&self) -> &R

Borrows the node’s role evidence.

Source

pub fn replace_role(&mut self, role: R) -> R

Replaces the role without changing the managed graph.

Source

pub fn insert_strong( &mut self, target: ManagedId, ) -> Result<EdgeId, StrongEdgeMutationError>

Inserts a strong edge and returns its stable identity.

Source

pub fn replace_strong( &mut self, edge: EdgeId, expected: ManagedId, replacement: ManagedId, ) -> Result<(), StrongEdgeMutationError>

Replaces a strong target only if it still equals expected.

Source

pub fn remove_strong( &mut self, edge: EdgeId, expected: ManagedId, ) -> Result<ManagedId, StrongEdgeMutationError>

Removes a strong edge only if it still equals expected.

Source

pub fn insert_weak( &mut self, target: ManagedId, ) -> Result<EdgeId, WeakEdgeMutationError>

Inserts a weak edge and returns its stable identity.

Source

pub fn replace_weak( &mut self, edge: EdgeId, expected: ManagedId, replacement: ManagedId, ) -> Result<(), WeakEdgeMutationError>

Replaces a weak target only if it still equals expected.

Source

pub fn remove_weak( &mut self, edge: EdgeId, expected: ManagedId, ) -> Result<ManagedId, WeakEdgeMutationError>

Removes a weak edge only if it still equals expected.

Source

pub fn insert_ephemeron( &mut self, key: ManagedId, value: ManagedId, ) -> Result<EdgeId, EphemeronMutationError>

Inserts an ephemeron entry and returns its stable identity.

Source

pub fn replace_ephemeron( &mut self, edge: EdgeId, expected: (ManagedId, ManagedId), replacement: (ManagedId, ManagedId), ) -> Result<(), EphemeronMutationError>

Replaces an ephemeron only if it still contains the expected pair.

Source

pub fn remove_ephemeron( &mut self, edge: EdgeId, expected: (ManagedId, ManagedId), ) -> Result<(ManagedId, ManagedId), EphemeronMutationError>

Removes an ephemeron only if it still contains the expected pair.

Trait Implementations§

Source§

impl<R> Clone for ManagedNode<R>
where R: Clone,

Source§

fn clone(&self) -> ManagedNode<R>

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<R> Debug for ManagedNode<R>
where R: Debug,

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<R> Eq for ManagedNode<R>
where R: Eq,

Source§

impl<R> ManagedObject for ManagedNode<R>

Source§

fn trace_edges(&self, visitor: &mut dyn EdgeVisitor)

Enumerates all strong, weak, and ephemeron edges exactly once.
Source§

fn clear_weak_edge(&mut self, edge: EdgeId, expected: ManagedId) -> bool

Clears one weak edge if it still points at expected. Read more
Source§

fn clear_ephemeron_edge( &mut self, edge: EdgeId, expected_key: ManagedId, expected_value: ManagedId, ) -> bool

Clears one ephemeron entry if it still has the expected key and value. Repeating a successful request must return false.
Source§

impl<R> PartialEq for ManagedNode<R>
where R: PartialEq,

Source§

fn eq(&self, other: &ManagedNode<R>) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl<R> RoleBearingManagedObject for ManagedNode<R>

Source§

type Role = R

Role label type chosen by the object owner.
Source§

fn managed_role(&self) -> &<ManagedNode<R> as RoleBearingManagedObject>::Role

Borrows the current audit role.
Source§

fn replace_managed_role( &mut self, role: <ManagedNode<R> as RoleBearingManagedObject>::Role, ) -> <ManagedNode<R> as RoleBearingManagedObject>::Role

Replaces audit role evidence without changing the managed graph.
Source§

impl<R> StructuralPartialEq for ManagedNode<R>
where R: PartialEq,

Auto Trait Implementations§

§

impl<R> Freeze for ManagedNode<R>
where R: Freeze,

§

impl<R> RefUnwindSafe for ManagedNode<R>
where R: RefUnwindSafe,

§

impl<R> Send for ManagedNode<R>
where R: Send,

§

impl<R> Sync for ManagedNode<R>
where R: Sync,

§

impl<R> Unpin for ManagedNode<R>
where R: Unpin,

§

impl<R> UnsafeUnpin for ManagedNode<R>
where R: UnsafeUnpin,

§

impl<R> UnwindSafe for ManagedNode<R>
where R: UnwindSafe,

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> RealizationService for T
where T: Any + Send + Sync,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Returns a downcast hook for typed access.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,