pub struct GraphSnapshot { /* private fields */ }Expand description
Immutable snapshot of a CodeGraph for long-running queries.
GraphSnapshot holds Arc references to the graph components,
providing a consistent view that is isolated from concurrent mutations.
§Design
Snapshots are created via CodeGraph::snapshot() or
ConcurrentCodeGraph::snapshot(). They are:
- Immutable: No mutation methods available
- Isolated: Independent of future graph mutations
- Cheap: Only Arc clones, no data copying
- Self-contained: Can outlive the original graph/lock
§Usage
use sqry_core::graph::unified::concurrent::{ConcurrentCodeGraph, GraphSnapshot};
let graph = ConcurrentCodeGraph::new();
// Create snapshot for a long query
let snapshot: GraphSnapshot = graph.snapshot();
// Snapshot can be used independently
let _epoch = snapshot.epoch();Implementations§
Source§impl GraphSnapshot
impl GraphSnapshot
Sourcepub fn edges(&self) -> &BidirectionalEdgeStore
pub fn edges(&self) -> &BidirectionalEdgeStore
Returns a reference to the bidirectional edge store.
Sourcepub fn strings(&self) -> &StringInterner
pub fn strings(&self) -> &StringInterner
Returns a reference to the string interner.
Sourcepub fn files(&self) -> &FileRegistry
pub fn files(&self) -> &FileRegistry
Returns a reference to the file registry.
Sourcepub fn indices(&self) -> &AuxiliaryIndices
pub fn indices(&self) -> &AuxiliaryIndices
Returns a reference to the auxiliary indices.
Sourcepub fn epoch(&self) -> u64
pub fn epoch(&self) -> u64
Returns the epoch at which this snapshot was taken.
This can be compared against the current graph epoch to detect if the graph has changed since the snapshot.
Sourcepub fn epoch_matches(&self, other_epoch: u64) -> bool
pub fn epoch_matches(&self, other_epoch: u64) -> bool
Returns true if this snapshot’s epoch matches the given epoch.
Use this to validate cursors before continuing pagination.
Sourcepub fn find_by_pattern(&self, pattern: &str) -> Vec<NodeId>
pub fn find_by_pattern(&self, pattern: &str) -> Vec<NodeId>
Finds nodes matching a pattern.
Performs a simple substring match on node names and qualified names. Returns all matching node IDs.
§Performance
Optimized to iterate over unique strings in the interner (smaller set) rather than all nodes in the arena.
§Arguments
pattern- The pattern to match (substring search)
§Returns
A vector of NodeIds for all matching nodes.
Sourcepub fn get_callees(&self, node: NodeId) -> Vec<NodeId>
pub fn get_callees(&self, node: NodeId) -> Vec<NodeId>
Sourcepub fn get_callers(&self, node: NodeId) -> Vec<NodeId>
pub fn get_callers(&self, node: NodeId) -> Vec<NodeId>
Sourcepub fn iter_nodes(&self) -> impl Iterator<Item = (NodeId, &NodeEntry)>
pub fn iter_nodes(&self) -> impl Iterator<Item = (NodeId, &NodeEntry)>
Iterates over all nodes in the graph.
Returns an iterator yielding (NodeId, &NodeEntry) pairs for all
occupied slots in the arena.
§Returns
An iterator over (NodeId, &NodeEntry) pairs.
Source§impl GraphSnapshot
impl GraphSnapshot
Sourcepub fn resolve_symbol(&self, query: &SymbolQuery<'_>) -> SymbolResolutionOutcome
pub fn resolve_symbol(&self, query: &SymbolQuery<'_>) -> SymbolResolutionOutcome
Resolves one symbol with explicit file-aware outcome classification.
Sourcepub fn find_symbol_candidates(
&self,
query: &SymbolQuery<'_>,
) -> SymbolCandidateOutcome
pub fn find_symbol_candidates( &self, query: &SymbolQuery<'_>, ) -> SymbolCandidateOutcome
Finds ordered candidates from the first eligible non-empty bucket.
Sourcepub fn resolve_file_scope(
&self,
file_scope: &FileScope<'_>,
) -> Result<ResolvedFileScope, FileScopeError>
pub fn resolve_file_scope( &self, file_scope: &FileScope<'_>, ) -> Result<ResolvedFileScope, FileScopeError>
Resolves an external file scope into an indexed file scope.
§Errors
Returns FileScopeError::FileNotIndexed when the requested file scope
is not present in the loaded graph indices.
Sourcepub fn normalize_symbol_query(
&self,
query: &SymbolQuery<'_>,
file_scope: &ResolvedFileScope,
) -> NormalizedSymbolQuery
pub fn normalize_symbol_query( &self, query: &SymbolQuery<'_>, file_scope: &ResolvedFileScope, ) -> NormalizedSymbolQuery
Normalizes a raw symbol query into canonical graph form.
Trait Implementations§
Source§impl Clone for GraphSnapshot
impl Clone for GraphSnapshot
Source§fn clone(&self) -> GraphSnapshot
fn clone(&self) -> GraphSnapshot
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for GraphSnapshot
impl !RefUnwindSafe for GraphSnapshot
impl Send for GraphSnapshot
impl Sync for GraphSnapshot
impl Unpin for GraphSnapshot
impl UnsafeUnpin for GraphSnapshot
impl !UnwindSafe for GraphSnapshot
Blanket Implementations§
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more