Trait graphannis::graph::GraphStorage [−][src]
pub trait GraphStorage: EdgeContainer { fn find_connected<'a>(
&'a self,
node: &NodeID,
min_distance: usize,
max_distance: usize
) -> Box<Iterator<Item = NodeID> + 'a>; fn find_connected_inverse<'a>(
&'a self,
node: &NodeID,
min_distance: usize,
max_distance: usize
) -> Box<Iterator<Item = NodeID> + 'a>; fn distance(&self, source: &NodeID, target: &NodeID) -> Option<usize>; fn is_connected(
&self,
source: &NodeID,
target: &NodeID,
min_distance: usize,
max_distance: usize
) -> bool; fn copy(&mut self, db: &Graph, orig: &EdgeContainer); fn as_edgecontainer(&self) -> &EdgeContainer; fn serialization_id(&self) -> String; fn serialize_gs(&self, writer: &mut Write) -> Result<()>; fn as_writeable(&mut self) -> Option<&mut WriteableGraphStorage> { ... } fn inverse_has_same_cost(&self) -> bool { ... } fn deserialize_gs(input: &mut Read) -> Result<Self>
where
Self: Sized + Deserialize<'de>, { ... } }
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
fn find_connected<'a>(
&'a self,
node: &NodeID,
min_distance: usize,
max_distance: usize
) -> Box<Iterator<Item = NodeID> + 'a>
&'a self,
node: &NodeID,
min_distance: usize,
max_distance: usize
) -> Box<Iterator<Item = NodeID> + 'a>
Find all nodes reachable from a given start node inside the component.
fn find_connected_inverse<'a>(
&'a self,
node: &NodeID,
min_distance: usize,
max_distance: usize
) -> Box<Iterator<Item = NodeID> + 'a>
&'a self,
node: &NodeID,
min_distance: usize,
max_distance: usize
) -> Box<Iterator<Item = NodeID> + 'a>
Find all nodes reachable from a given start node inside the component, when the directed edges are inversed.
fn distance(&self, source: &NodeID, target: &NodeID) -> Option<usize>
Compute the distance (shortest path length) of two nodes inside this component.
fn is_connected(
&self,
source: &NodeID,
target: &NodeID,
min_distance: usize,
max_distance: usize
) -> bool
&self,
source: &NodeID,
target: &NodeID,
min_distance: usize,
max_distance: usize
) -> bool
Check if two nodes are connected with any path in this component given a minimum (min_distance
) and maximum (max_distance
) path length.
fn copy(&mut self, db: &Graph, orig: &EdgeContainer)
Copy the content of another component. This removes the existing content of this graph storage.
fn as_edgecontainer(&self) -> &EdgeContainer
Upcast this graph storage to the EdgeContainer trait.
fn serialization_id(&self) -> String
Return an identifier for this graph storage which is used to distinguish the different graph storages when (de-) serialized.
fn serialize_gs(&self, writer: &mut Write) -> Result<()>
Serialize this graph storage.
Provided Methods
fn as_writeable(&mut self) -> Option<&mut WriteableGraphStorage>
Try to downcast this graph storage to a WriteableGraphStorage trait.
Returns None
if this graph storage is not writable.
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.
fn deserialize_gs(input: &mut Read) -> Result<Self> where
Self: Sized + Deserialize<'de>,
Self: Sized + Deserialize<'de>,
De-serialize this graph storage.