pub trait EntryEngine<'i, V> {
    type EntryRef: Deref<Target = V>;
    type EntryMut: DerefMut<Target = V>;

    // Required methods
    fn get_entry<Q: Into<Query>>(&'i self, query: Q) -> V;
    fn try_entry<Q: Into<Query>>(
        &'i self,
        query: Q
    ) -> Result<Self::EntryRef, GraphError>;
    fn mut_entry<Q: Into<Query>>(
        &'i mut self,
        query: Q
    ) -> Result<Self::EntryMut, GraphError>;

    // Provided methods
    fn set_entry<Q: Into<Query>>(
        &'i mut self,
        query: Q,
        entry: V
    ) -> Result<(), GraphError> { ... }
    fn get_node_data(&'i self, node: usize) -> V { ... }
    fn try_node_data(&'i self, node: usize) -> Option<Self::EntryRef> { ... }
    fn mut_node_data(&'i mut self, node: usize) -> Option<Self::EntryMut> { ... }
    fn set_node_data(&'i mut self, node: usize, data: V) { ... }
    fn get_edge_data<Q: Into<EdgeQuery>>(&'i self, edge: Q) -> V { ... }
    fn try_edge_data<Q: Into<EdgeQuery>>(
        &'i self,
        edge: Q
    ) -> Option<Self::EntryRef> { ... }
    fn mut_edge_data<Q: Into<EdgeQuery>>(
        &'i mut self,
        edge: Q
    ) -> Option<Self::EntryMut> { ... }
    fn set_edge_data<Q: Into<EdgeQuery>>(&'i mut self, edge: Q, data: V) { ... }
}

Required Associated Types§

source

type EntryRef: Deref<Target = V>

source

type EntryMut: DerefMut<Target = V>

Required Methods§

source

fn get_entry<Q: Into<Query>>(&'i self, query: Q) -> V

Get the reference of data by given query from the storage.

Examples
use graph_theory::GraphEngine;
source

fn try_entry<Q: Into<Query>>( &'i self, query: Q ) -> Result<Self::EntryRef, GraphError>

source

fn mut_entry<Q: Into<Query>>( &'i mut self, query: Q ) -> Result<Self::EntryMut, GraphError>

Provided Methods§

source

fn set_entry<Q: Into<Query>>( &'i mut self, query: Q, entry: V ) -> Result<(), GraphError>

source

fn get_node_data(&'i self, node: usize) -> V

source

fn try_node_data(&'i self, node: usize) -> Option<Self::EntryRef>

source

fn mut_node_data(&'i mut self, node: usize) -> Option<Self::EntryMut>

source

fn set_node_data(&'i mut self, node: usize, data: V)

source

fn get_edge_data<Q: Into<EdgeQuery>>(&'i self, edge: Q) -> V

source

fn try_edge_data<Q: Into<EdgeQuery>>( &'i self, edge: Q ) -> Option<Self::EntryRef>

source

fn mut_edge_data<Q: Into<EdgeQuery>>( &'i mut self, edge: Q ) -> Option<Self::EntryMut>

source

fn set_edge_data<Q: Into<EdgeQuery>>(&'i mut self, edge: Q, data: V)

Implementors§

source§

impl<'i, V> EntryEngine<'i, V> for ListStorage<V>where V: Clone + 'i,