pub struct CodeGraph {
pub snapshot_id: SnapshotId,
/* private fields */
}Expand description
The canonical dependency graph for a codebase snapshot.
Fields§
§snapshot_id: SnapshotIdSnapshot identifier for this graph as discussed before.
Implementations§
Source§impl CodeGraph
impl CodeGraph
Sourcepub fn new(snapshot_id: SnapshotId) -> Self
pub fn new(snapshot_id: SnapshotId) -> Self
Creates an empty CodeGraph for the given snapshot.
Sourcepub fn graph(&self) -> &DiGraph<NodeData, EdgeData>
pub fn graph(&self) -> &DiGraph<NodeData, EdgeData>
Immutable access to the underlying petgraph graph for SCC analysis, serialization, and deploy algorithms.
Sourcepub fn add_node(&mut self, node: NodeData) -> NodeIndex
pub fn add_node(&mut self, node: NodeData) -> NodeIndex
Adds a raw node to the graph. Node additions do not affect edge normalization, so this is the only direct mutation needed by deploy/test code that injects synthetic nodes post-build.
The caller remains responsible for registering the node in the
index maps (file_to_index, symbol_to_index, external_index)
when it is a File/Symbol/External node. This method does not
sync those maps; a bare Data node needs no registration.
Sourcepub fn add_file_node(&mut self, node: FileNode) -> NodeIndex
pub fn add_file_node(&mut self, node: FileNode) -> NodeIndex
Add a file node and register it in the file index.
Sourcepub fn add_symbol_node(&mut self, node: SymbolNode) -> NodeIndex
pub fn add_symbol_node(&mut self, node: SymbolNode) -> NodeIndex
Add a symbol node and register it in the symbol index.
pub fn file_node_index(&self, file_id: FileId) -> Option<NodeIndex>
pub fn symbol_node_index(&self, symbol_id: SymbolId) -> Option<NodeIndex>
pub fn file_node(&self, file_id: FileId) -> Option<&FileNode>
pub fn symbol_node(&self, symbol_id: SymbolId) -> Option<&SymbolNode>
pub fn file_count(&self) -> usize
pub fn symbol_count(&self) -> usize
pub fn external_count(&self) -> usize
pub fn node_count(&self) -> usize
pub fn edge_count(&self) -> usize
Sourcepub fn get_or_create_external_node(
&mut self,
raw_path: String,
language: LangId,
) -> NodeIndex
pub fn get_or_create_external_node( &mut self, raw_path: String, language: LangId, ) -> NodeIndex
Resolves or creates the External node for a raw unresolved path, keeping
external_index consistent so repeated loads reuse a single node.
Sourcepub fn add_edge_normalized(
&mut self,
source: NodeIndex,
target: NodeIndex,
kind: EdgeKind,
confidence: f32,
)
pub fn add_edge_normalized( &mut self, source: NodeIndex, target: NodeIndex, kind: EdgeKind, confidence: f32, )
Adds an edge, normalizing duplicate (src, dst, kind) triples by max-merging
confidence so injected edges obey the same invariant as builder-constructed ones.
The O(1) edge_index makes duplicate detection independent of out-degree.
Sourcepub fn add_edge_normalized_with_flow(
&mut self,
source: NodeIndex,
target: NodeIndex,
kind: EdgeKind,
confidence: f32,
flow_kind: Option<FlowKind>,
)
pub fn add_edge_normalized_with_flow( &mut self, source: NodeIndex, target: NodeIndex, kind: EdgeKind, confidence: f32, flow_kind: Option<FlowKind>, )
Adds a Flow edge with a specific flow kind, normalizing duplicates by
max-merging confidence (same (src, dst, Flow) triple). When a duplicate
edge exists, the first non-None flow_kind is preserved. The lookup is
O(1) via the dedup index.
pub fn files(&self) -> impl Iterator<Item = (FileId, &FileNode)> + '_
Sourcepub fn symbols(&self) -> impl Iterator<Item = (SymbolId, &SymbolNode)> + '_
pub fn symbols(&self) -> impl Iterator<Item = (SymbolId, &SymbolNode)> + '_
Files in path order.
Callers that need a stable sequence, such as a shard export or a partition, must not rely on hash map order.
pub fn edges_of_kind( &self, kind: EdgeKind, ) -> impl Iterator<Item = (NodeIndex, NodeIndex)> + '_
Trait Implementations§
Auto Trait Implementations§
impl Freeze for CodeGraph
impl RefUnwindSafe for CodeGraph
impl Send for CodeGraph
impl Sync for CodeGraph
impl Unpin for CodeGraph
impl UnsafeUnpin for CodeGraph
impl UnwindSafe for CodeGraph
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 more