pub trait GraphStore {
Show 26 methods
// Required methods
fn upsert_node(&self, node: &GraphNode) -> Result<(), Error>;
fn upsert_edge(&self, edge: &GraphEdge) -> Result<(), Error>;
fn delete_node(&self, id: &str) -> Result<usize, Error>;
fn delete_edge(
&self,
from_id: &str,
to_id: &str,
kind: &str,
) -> Result<usize, Error>;
fn node(&self, id: &str) -> Result<Option<GraphNode>, Error>;
fn all_nodes(&self) -> Result<Vec<GraphNode>, Error>;
fn all_edges(&self) -> Result<Vec<GraphEdge>, Error>;
fn nodes_by_kind(&self, kind: &str) -> Result<Vec<GraphNode>, Error>;
fn outgoing_edges(
&self,
from_id: &str,
kind: Option<&str>,
) -> Result<Vec<GraphEdge>, Error>;
fn shortest_path(
&self,
from_id: &str,
to_id: &str,
kind: Option<&str>,
) -> Result<Option<GraphPath>, Error>;
// Provided methods
fn edge(&self, edge_id: &str) -> Result<Option<GraphEdge>, Error> { ... }
fn graph_counts(&self) -> Result<(usize, usize), Error> { ... }
fn sample_edge(
&self,
kind: Option<&str>,
) -> Result<Option<GraphEdge>, Error> { ... }
fn sample_edge_with_property(
&self,
) -> Result<Option<(GraphEdge, GraphPropertyFilter)>, Error> { ... }
fn incident_edges(
&self,
node_id: &str,
kind: Option<&str>,
) -> Result<Vec<GraphEdge>, Error> { ... }
fn paged_edges(
&self,
kind: Option<&str>,
options: GraphQueryOptions,
) -> Result<GraphPagedSubgraph, Error> { ... }
fn paged_incident_edges(
&self,
node_id: &str,
kind: Option<&str>,
options: GraphQueryOptions,
) -> Result<GraphPagedSubgraph, Error> { ... }
fn edges_between_nodes(
&self,
node_ids: &BTreeSet<String>,
) -> Result<Vec<GraphEdge>, Error> { ... }
fn shortest_path_with_max_hops(
&self,
from_id: &str,
to_id: &str,
kind: Option<&str>,
max_hops: Option<usize>,
) -> Result<Option<GraphPath>, Error> { ... }
fn neighborhood(
&self,
center_id: &str,
depth: usize,
kind: Option<&str>,
) -> Result<Option<GraphSubgraph>, Error> { ... }
fn paged_nodes_by_kind(
&self,
kind: &str,
options: GraphQueryOptions,
) -> Result<GraphPagedSubgraph, Error> { ... }
fn paged_neighborhood(
&self,
center_id: &str,
depth: usize,
kind: Option<&str>,
options: GraphQueryOptions,
) -> Result<Option<GraphPagedSubgraph>, Error> { ... }
fn ranked_neighborhood(
&self,
center_id: &str,
options: &RankedNeighborhoodOptions,
) -> Result<Option<RankedNeighborhoodResult>, Error> { ... }
fn reachable_nodes_by_kind(
&self,
from_id: &str,
kind: &str,
depth: usize,
limit: usize,
) -> Result<Vec<(GraphNode, GraphPath)>, Error> { ... }
fn reachable_nodes_by_kinds(
&self,
from_id: &str,
kinds: &[&str],
depth: usize,
limit: usize,
) -> Result<BTreeMap<String, Vec<(GraphNode, GraphPath)>>, Error> { ... }
fn resolve_evidence_target(
&self,
target: &str,
kinds: &[&str],
) -> Result<Option<GraphNode>, Error> { ... }
}Required Methods§
fn upsert_node(&self, node: &GraphNode) -> Result<(), Error>
fn upsert_edge(&self, edge: &GraphEdge) -> Result<(), Error>
fn delete_node(&self, id: &str) -> Result<usize, Error>
fn delete_edge( &self, from_id: &str, to_id: &str, kind: &str, ) -> Result<usize, Error>
fn node(&self, id: &str) -> Result<Option<GraphNode>, Error>
fn all_nodes(&self) -> Result<Vec<GraphNode>, Error>
fn all_edges(&self) -> Result<Vec<GraphEdge>, Error>
fn nodes_by_kind(&self, kind: &str) -> Result<Vec<GraphNode>, Error>
fn outgoing_edges( &self, from_id: &str, kind: Option<&str>, ) -> Result<Vec<GraphEdge>, Error>
fn shortest_path( &self, from_id: &str, to_id: &str, kind: Option<&str>, ) -> Result<Option<GraphPath>, Error>
Provided Methods§
fn edge(&self, edge_id: &str) -> Result<Option<GraphEdge>, Error>
fn graph_counts(&self) -> Result<(usize, usize), Error>
fn sample_edge(&self, kind: Option<&str>) -> Result<Option<GraphEdge>, Error>
fn sample_edge_with_property( &self, ) -> Result<Option<(GraphEdge, GraphPropertyFilter)>, Error>
fn incident_edges( &self, node_id: &str, kind: Option<&str>, ) -> Result<Vec<GraphEdge>, Error>
fn paged_edges( &self, kind: Option<&str>, options: GraphQueryOptions, ) -> Result<GraphPagedSubgraph, Error>
fn paged_incident_edges( &self, node_id: &str, kind: Option<&str>, options: GraphQueryOptions, ) -> Result<GraphPagedSubgraph, Error>
fn edges_between_nodes( &self, node_ids: &BTreeSet<String>, ) -> Result<Vec<GraphEdge>, Error>
fn shortest_path_with_max_hops( &self, from_id: &str, to_id: &str, kind: Option<&str>, max_hops: Option<usize>, ) -> Result<Option<GraphPath>, Error>
fn neighborhood( &self, center_id: &str, depth: usize, kind: Option<&str>, ) -> Result<Option<GraphSubgraph>, Error>
fn paged_nodes_by_kind( &self, kind: &str, options: GraphQueryOptions, ) -> Result<GraphPagedSubgraph, Error>
fn paged_neighborhood( &self, center_id: &str, depth: usize, kind: Option<&str>, options: GraphQueryOptions, ) -> Result<Option<GraphPagedSubgraph>, Error>
fn ranked_neighborhood( &self, center_id: &str, options: &RankedNeighborhoodOptions, ) -> Result<Option<RankedNeighborhoodResult>, Error>
fn reachable_nodes_by_kind( &self, from_id: &str, kind: &str, depth: usize, limit: usize, ) -> Result<Vec<(GraphNode, GraphPath)>, Error>
fn reachable_nodes_by_kinds( &self, from_id: &str, kinds: &[&str], depth: usize, limit: usize, ) -> Result<BTreeMap<String, Vec<(GraphNode, GraphPath)>>, Error>
fn resolve_evidence_target( &self, target: &str, kinds: &[&str], ) -> Result<Option<GraphNode>, Error>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".