pub struct GraphView<'a> {
pub ids: &'a IdMap,
pub syms: &'a Interner,
pub labels: &'a [u32],
pub props: ColumnsView<'a>,
pub topo: TopologyView<'a>,
pub edge_props: EdgePropsView<'a>,
pub mask: Option<&'a HashSet<u32>>,
pub prop_index: Option<&'a PropertyIndex>,
}Expand description
Read-only twin of GraphMut. Holds only borrowed graph state.
Fields§
§ids: &'a IdMap§syms: &'a Interner§labels: &'a [u32]§props: ColumnsView<'a>Overlay-over-base column store view. For V5–V7 snapshots and fresh
databases, base is None and all column reads go to the overlay.
For V8 snapshots, base holds the archived columns from the mmap.
topo: TopologyView<'a>Overlay-over-base topology view. For V5–V7 snapshots and fresh
databases, base is None and all topology reads go to the owned
overlay. For V8 snapshots, base holds the archived CSR from the
mmap, and WAL-replayed edges accumulate in the overlay.
edge_props: EdgePropsView<'a>Overlay-over-base edge-property view. For V8 snapshots the base section is consulted zero-copy; the overlay holds only post-snapshot changes. Tombstones in the overlay mask deleted-from-base entries.
mask: Option<&'a HashSet<u32>>Optional query-scoped node visibility set. None = all nodes visible.
When Some(set), only dense ids present in set are accessible.
prop_index: Option<&'a PropertyIndex>Optional equality index over scalar properties. Some on the primary
locked read path; None for MVCC reader snapshots (which fall back to a
scan). IndexScan consults it only when the (label, field) is declared.
Implementations§
Source§impl<'a> GraphView<'a>
impl<'a> GraphView<'a>
Sourcepub fn visible(&self, id: u32) -> bool
pub fn visible(&self, id: u32) -> bool
Returns true if id is visible under the current mask.
Always true when no mask is set.
pub fn node_id(&self, key: &str) -> Option<u32>
pub fn key_of(&self, id: u32) -> &str
pub fn label_of(&self, id: u32) -> Option<&str>
Sourcepub fn nodes_with_prop(
&self,
label: &str,
field: &str,
value: &Value,
) -> Option<Vec<u32>>
pub fn nodes_with_prop( &self, label: &str, field: &str, value: &Value, ) -> Option<Vec<u32>>
Indexed lookup of node ids of label whose scalar field equals
value, filtered by the active mask. Returns None when no equality
index covers (label, field) (the caller should fall back to a scan);
Some(ids) — possibly empty — when the index answers the query.
pub fn nodes_with_label(&self, label: &str) -> Vec<u32>
Sourcepub fn nodes_all(&self) -> Vec<u32>
pub fn nodes_all(&self) -> Vec<u32>
All non-tombstoned node ids regardless of label.
Respects the query-scoped mask: when a mask is active only ids present in the mask are returned, consistent with every other node accessor.
Sourcepub fn prop(&self, id: u32, field: &str) -> Option<ValueRef<'_>>
pub fn prop(&self, id: u32, field: &str) -> Option<ValueRef<'_>>
Look up the property field for node id.
Returns ValueRef::Borrowed for overlay hits (zero allocation) and
ValueRef::Owned for base-section hits (value materialised from
archived data). Returns None when neither overlay nor base has a
value for (id, field).
Auto Trait Implementations§
impl<'a> Freeze for GraphView<'a>
impl<'a> RefUnwindSafe for GraphView<'a>
impl<'a> Send for GraphView<'a>
impl<'a> Sync for GraphView<'a>
impl<'a> Unpin for GraphView<'a>
impl<'a> UnsafeUnpin for GraphView<'a>
impl<'a> UnwindSafe for GraphView<'a>
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.