pub trait GraphProvider: Send + Sync {
// Required methods
fn overview<'life0, 'life1, 'async_trait>(
&'life0 self,
realm: Option<&'life1 str>,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<GraphPayload>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn node<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<GraphNode>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn neighbors<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
dir: Direction,
only_internal: bool,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<EdgeExpansion>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn subgraph<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
depth: usize,
) -> Pin<Box<dyn Future<Output = Result<GraphPayload>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn search<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
text: &'life1 str,
labels: &'life2 [String],
realm: Option<&'life3 str>,
limit: usize,
offset: usize,
) -> Pin<Box<dyn Future<Output = Result<SearchHits>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait;
fn stats<'life0, 'life1, 'async_trait>(
&'life0 self,
realm: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<GraphStats>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn schema<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<GraphSchema>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
}Required Methods§
Sourcefn overview<'life0, 'life1, 'async_trait>(
&'life0 self,
realm: Option<&'life1 str>,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<GraphPayload>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn overview<'life0, 'life1, 'async_trait>(
&'life0 self,
realm: Option<&'life1 str>,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<GraphPayload>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Capped sample of the whole graph: stats + nodes + edges.
Sourcefn node<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<GraphNode>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn node<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<GraphNode>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
A single node by id, or None if absent.
Sourcefn neighbors<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
dir: Direction,
only_internal: bool,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<EdgeExpansion>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn neighbors<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [String],
dir: Direction,
only_internal: bool,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<EdgeExpansion>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Edges touching ids (respecting dir), plus the node ids newly reached.
Sourcefn subgraph<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
depth: usize,
) -> Pin<Box<dyn Future<Output = Result<GraphPayload>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn subgraph<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
depth: usize,
) -> Pin<Box<dyn Future<Output = Result<GraphPayload>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
BFS from id up to depth hops (both directions); returns the subgraph.
Sourcefn search<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
text: &'life1 str,
labels: &'life2 [String],
realm: Option<&'life3 str>,
limit: usize,
offset: usize,
) -> Pin<Box<dyn Future<Output = Result<SearchHits>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn search<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
text: &'life1 str,
labels: &'life2 [String],
realm: Option<&'life3 str>,
limit: usize,
offset: usize,
) -> Pin<Box<dyn Future<Output = Result<SearchHits>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Nodes whose name matches text (case-insensitive), optionally filtered
by labels / realm.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".