pub struct Graph { /* private fields */ }Implementations§
Source§impl Graph
impl Graph
Sourcepub fn try_from_parts(
nodes: impl IntoIterator<Item = Node>,
edges: impl IntoIterator<Item = Edge>,
) -> Result<Graph, GraphError>
pub fn try_from_parts( nodes: impl IntoIterator<Item = Node>, edges: impl IntoIterator<Item = Edge>, ) -> Result<Graph, GraphError>
Creates a validated graph and canonicalizes its ordering.
§Errors
Returns an error for conflicting nodes, dangling edges, empty extractor identities, or invalid source spans.
Sourcepub fn try_from_sorted_nodes(
nodes: Vec<Node>,
edges: impl IntoIterator<Item = Edge>,
) -> Result<Graph, GraphError>
pub fn try_from_sorted_nodes( nodes: Vec<Node>, edges: impl IntoIterator<Item = Edge>, ) -> Result<Graph, GraphError>
Builds a canonical graph without re-sorting already sorted nodes.
Unsorted nodes safely fall back to Self::try_from_parts. Edges may
arrive in any order and are still validated, sorted, and deduplicated.
§Errors
Returns the same validation errors as Self::try_from_parts.
Sourcepub fn try_from_sorted_parts(
nodes: Vec<Node>,
edges: Vec<Edge>,
) -> Result<Graph, GraphError>
pub fn try_from_sorted_parts( nodes: Vec<Node>, edges: Vec<Edge>, ) -> Result<Graph, GraphError>
Builds faster when nodes and edges are already in canonical order.
Unordered input safely falls back to Self::try_from_parts.
§Errors
Returns the same validation errors as Self::try_from_parts.
pub fn nodes(&self) -> &[Node]
pub fn edges(&self) -> &[Edge]
pub const fn topology(&self) -> &Topology
pub fn node(&self, id: &str) -> Option<&Node>
pub fn outgoing<'graph>( &'graph self, id: &NodeId, ) -> impl Iterator<Item = &'graph Edge>
pub fn incoming<'graph>( &'graph self, id: &NodeId, ) -> impl Iterator<Item = &'graph Edge>
pub fn edge_at(&self, index: EdgeIndex) -> Option<&Edge>
pub fn node_index(&self, id: &str) -> Option<NodeIndex>
pub fn node_at(&self, index: NodeIndex) -> Option<&Node>
pub fn outgoing_at(&self, index: NodeIndex) -> impl Iterator<Item = &Edge>
pub fn incoming_at(&self, index: NodeIndex) -> impl Iterator<Item = &Edge>
pub fn outgoing_neighbors_at( &self, index: NodeIndex, ) -> impl Iterator<Item = NodeIndex>
pub fn incoming_neighbors_at( &self, index: NodeIndex, ) -> impl Iterator<Item = NodeIndex>
pub fn out_degree(&self, index: NodeIndex) -> Option<usize>
pub fn in_degree(&self, index: NodeIndex) -> Option<usize>
pub const fn node_count(&self) -> usize
pub const fn edge_count(&self) -> usize
pub const fn is_empty(&self) -> bool
pub fn into_parts(self) -> (Vec<Node>, Vec<Edge>)
Source§impl Graph
impl Graph
Sourcepub fn traversal_cache(&self) -> TraversalCache
pub fn traversal_cache(&self) -> TraversalCache
Derives an optional traversal cache without changing evidence storage.
Sourcepub fn traversal_cache_with(&self, storage: TraversalStorage) -> TraversalCache
pub fn traversal_cache_with(&self, storage: TraversalStorage) -> TraversalCache
Derives a traversal cache with an explicit speed/space policy.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Graph
impl<'de> Deserialize<'de> for Graph
Source§fn deserialize<D>(
deserializer: D,
) -> Result<Graph, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<Graph, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for Graph
Source§impl GraphView for Graph
impl GraphView for Graph
type Node = NodeIndex
type Edge = EdgeIndex
fn node_count(&self) -> usize
fn edge_count(&self) -> usize
fn contains_node(&self, node: NodeIndex) -> bool
fn contains_edge(&self, edge: EdgeIndex) -> bool
fn node_indices(&self) -> impl Iterator<Item = <Graph as GraphView>::Node>
fn edge_indices(&self) -> impl Iterator<Item = <Graph as GraphView>::Edge>
fn edge_endpoints(&self, edge: EdgeIndex) -> Option<EdgeEndpoints>
fn edge_references(&self) -> impl Iterator<Item = (EdgeIndex, EdgeEndpoints)>
fn outgoing_edges(&self, node: NodeIndex) -> impl Iterator<Item = EdgeIndex>
fn incoming_edges(&self, node: NodeIndex) -> impl Iterator<Item = EdgeIndex>
Source§impl IndexGraphView for Graph
impl IndexGraphView for Graph
Source§impl Serialize for Graph
impl Serialize for Graph
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl StructuralPartialEq for Graph
Source§impl TryFrom<LegacyGraph> for Graph
impl TryFrom<LegacyGraph> for Graph
Source§type Error = GraphError
type Error = GraphError
The type returned in the event of a conversion error.
Source§fn try_from(value: LegacyGraph) -> Result<Graph, GraphError>
fn try_from(value: LegacyGraph) -> Result<Graph, GraphError>
Performs the conversion.
Auto Trait Implementations§
impl Freeze for Graph
impl RefUnwindSafe for Graph
impl Send for Graph
impl Sync for Graph
impl Unpin for Graph
impl UnsafeUnpin for Graph
impl UnwindSafe for Graph
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
Mutably borrows from an owned value. Read more