Trait CheckIntegrity

Source
pub trait CheckIntegrity {
    // Required methods
    fn check_universal_ids<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<Id>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn check_segments<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn check_isomorphic_graph<'life0, 'life1, 'async_trait>(
        &'life0 self,
        other: &'life1 dyn DagAlgorithm,
        heads: NameSet,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
}
Expand description

Integrity check functions.

Required Methods§

Source

fn check_universal_ids<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Vec<Id>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Verify that universally known Ids (parents of merges) are actually known locally.

Returns set of Ids that should be universally known but missing. An empty set means all universally known Ids are known locally.

Check FirstAncestorConstraint::KnownUniversally for concepts of “universally known”.

Source

fn check_segments<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Check segment properties: no cycles, no overlaps, no gaps etc. This is only about the Ids, not about the vertex names.

Returns human readable messages about problems. No messages indicates there are no problems detected.

Source

fn check_isomorphic_graph<'life0, 'life1, 'async_trait>( &'life0 self, other: &'life1 dyn DagAlgorithm, heads: NameSet, ) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Check that the subset of the current graph (ancestors of heads) is isomorphic with the subset in the other graph.

Returns messages about where two graphs are different. No messages indicates two graphs are likely isomorphic.

Note: For performance, this function only checks the “shape” of the graph, without checking the (potentially lazy) vertex names.

Implementors§

Source§

impl<IS, M, P, S> CheckIntegrity for AbstractNameDag<IdDag<IS>, M, P, S>
where IS: IdDagStore + Persist + 'static, IdDag<IS>: TryClone, M: TryClone + IdMapAssignHead + Persist + Send + Sync + 'static, P: TryClone + Send + Sync + 'static, S: TryClone + Persist + Send + Sync + 'static,