Trait graphannis::graph::GraphStorage
source · pub trait GraphStorage: EdgeContainer {
// Required methods
fn find_connected<'a>(
&'a self,
node: u64,
min_distance: usize,
max_distance: Bound<usize>
) -> Box<dyn Iterator<Item = Result<u64, GraphAnnisCoreError>> + 'a>;
fn find_connected_inverse<'a>(
&'a self,
node: u64,
min_distance: usize,
max_distance: Bound<usize>
) -> Box<dyn Iterator<Item = Result<u64, GraphAnnisCoreError>> + 'a>;
fn distance(
&self,
source: u64,
target: u64
) -> Result<Option<usize>, GraphAnnisCoreError>;
fn is_connected(
&self,
source: u64,
target: u64,
min_distance: usize,
max_distance: Bound<usize>
) -> Result<bool, GraphAnnisCoreError>;
fn get_anno_storage(&self) -> &dyn EdgeAnnotationStorage;
fn copy(
&mut self,
node_annos: &dyn NodeAnnotationStorage,
orig: &dyn GraphStorage
) -> Result<(), GraphAnnisCoreError>;
fn as_edgecontainer(&self) -> &dyn EdgeContainer;
fn serialization_id(&self) -> String;
fn load_from(location: &Path) -> Result<Self, GraphAnnisCoreError>
where Self: Sized;
fn save_to(&self, location: &Path) -> Result<(), GraphAnnisCoreError>;
// Provided methods
fn as_writeable(&mut self) -> Option<&mut dyn WriteableGraphStorage> { ... }
fn inverse_has_same_cost(&self) -> bool { ... }
}
Expand description
A graph storage is the representation of an edge component of a graph with specific structures. These specific structures are exploited to efficiently implement reachability queries.
Required Methods§
sourcefn find_connected<'a>(
&'a self,
node: u64,
min_distance: usize,
max_distance: Bound<usize>
) -> Box<dyn Iterator<Item = Result<u64, GraphAnnisCoreError>> + 'a>
fn find_connected<'a>( &'a self, node: u64, min_distance: usize, max_distance: Bound<usize> ) -> Box<dyn Iterator<Item = Result<u64, GraphAnnisCoreError>> + 'a>
Find all nodes reachable from a given start node inside the component.
sourcefn find_connected_inverse<'a>(
&'a self,
node: u64,
min_distance: usize,
max_distance: Bound<usize>
) -> Box<dyn Iterator<Item = Result<u64, GraphAnnisCoreError>> + 'a>
fn find_connected_inverse<'a>( &'a self, node: u64, min_distance: usize, max_distance: Bound<usize> ) -> Box<dyn Iterator<Item = Result<u64, GraphAnnisCoreError>> + 'a>
Find all nodes reachable from a given start node inside the component, when the directed edges are inversed.
sourcefn distance(
&self,
source: u64,
target: u64
) -> Result<Option<usize>, GraphAnnisCoreError>
fn distance( &self, source: u64, target: u64 ) -> Result<Option<usize>, GraphAnnisCoreError>
Compute the distance (shortest path length) of two nodes inside this component.
sourcefn is_connected(
&self,
source: u64,
target: u64,
min_distance: usize,
max_distance: Bound<usize>
) -> Result<bool, GraphAnnisCoreError>
fn is_connected( &self, source: u64, target: u64, min_distance: usize, max_distance: Bound<usize> ) -> Result<bool, GraphAnnisCoreError>
Check if two nodes are connected with any path in this component given a minimum (min_distance
) and maximum (max_distance
) path length.
sourcefn get_anno_storage(&self) -> &dyn EdgeAnnotationStorage
fn get_anno_storage(&self) -> &dyn EdgeAnnotationStorage
Get the annotation storage for the edges of this graph storage.
sourcefn copy(
&mut self,
node_annos: &dyn NodeAnnotationStorage,
orig: &dyn GraphStorage
) -> Result<(), GraphAnnisCoreError>
fn copy( &mut self, node_annos: &dyn NodeAnnotationStorage, orig: &dyn GraphStorage ) -> Result<(), GraphAnnisCoreError>
Copy the content of another component. This removes the existing content of this graph storage.
sourcefn as_edgecontainer(&self) -> &dyn EdgeContainer
fn as_edgecontainer(&self) -> &dyn EdgeContainer
Upcast this graph storage to the EdgeContainer trait.
sourcefn serialization_id(&self) -> String
fn serialization_id(&self) -> String
Return an identifier for this graph storage which is used to distinguish the different graph storages when (de-) serialized.
Provided Methods§
sourcefn as_writeable(&mut self) -> Option<&mut dyn WriteableGraphStorage>
fn as_writeable(&mut self) -> Option<&mut dyn WriteableGraphStorage>
Try to downcast this graph storage to a WriteableGraphStorage trait.
Returns None
if this graph storage is not writable.
sourcefn inverse_has_same_cost(&self) -> bool
fn inverse_has_same_cost(&self) -> bool
If true, finding the inverse connected nodes via find_connected_inverse(…) has the same cost as the non-inverse case.