Skip to main content

NodeMask

Struct NodeMask 

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

Query-scoped node visibility filter (ACL primitive).

When a NodeMask is passed to query_masked, only nodes whose dense id appears in visible will be returned by label scans, key lookups, and neighbor expansions. Edges where either endpoint is hidden are silently dropped from the result.

Unknown keys in from_keys are silently ignored (they resolve to no id). An empty mask hides every node.

Implementations§

Source§

impl NodeMask

Source

pub fn from_keys<'a, F: Fs>( db: &GraphDb<F>, keys: impl IntoIterator<Item = &'a str>, ) -> Self

Resolve string keys to dense ids and build a mask.

Keys that do not exist in the database are ignored. The mask mode defaults to MaskMode::Omit; call NodeMask::with_mode to opt into MaskMode::Stub.

Source

pub fn from_ids(ids: impl IntoIterator<Item = u32>) -> Self

Build a mask from an already-resolved iterator of dense node ids.

Used by ReaderSnapshot handlers that resolve keys against the frozen state without a GraphDb reference.

Source

pub fn with_mode(self, mode: MaskMode) -> Self

Set the rendering mode, consuming self and returning a new mask.

SECURITY: never call with MaskMode::Stub on role-token paths.

Source

pub fn mode(&self) -> MaskMode

Return the current rendering mode.

Source

pub fn len(&self) -> usize

Source

pub fn is_empty(&self) -> bool

Source

pub fn intersect(&self, other: &NodeMask) -> NodeMask

Return a new mask that is the intersection of self and other.

The result contains only nodes visible in both masks. Used to enforce the never-widen rule when a role token also supplies a client mask: effective = role_mask.intersect(&client_mask).

The result always carries MaskMode::Omit — the role-path invariant means stubs must never slip through an intersection.

Source

pub fn contains_id(&self, id: u32) -> bool

Return true if the dense node id is visible in this mask.

Used by ReaderSnapshot handlers where the key has already been resolved to a dense id (avoids a second lookup into a GraphDb).

Source

pub fn contains_node<F: Fs>(&self, db: &GraphDb<F>, key: &str) -> bool

Return true if the node identified by key is visible in this mask.

Returns false for keys that do not exist in the database (unknown keys are never visible), as well as for keys that exist but are not in the visible set. Used by node-endpoint handlers to produce the same absent-key response for both missing and hidden nodes.

Trait Implementations§

Source§

impl Clone for NodeMask

Source§

fn clone(&self) -> NodeMask

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 Debug for NodeMask

Source§

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

Formats the value using the given formatter. 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> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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> 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> 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> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
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 = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.