algae_graph/graph/
mod.rs

1/*
2    Appellation: graph <module>
3    Contrib: FL03 <jo3mccain@icloud.com>
4    Description: This module implements an abstract graph data structure
5*/
6use crate::store::Entry;
7use serde::{Deserialize, Serialize};
8use strum::{Display, EnumString, EnumVariantNames};
9
10pub trait GraphStore<N, V>: Default {
11    fn capacity(&self) -> usize;
12    fn clear(&mut self);
13    fn dim(&self) -> (usize, usize);
14    fn get_entries(&self, key: &N) -> Option<&Entry<N, V>>;
15}
16
17#[derive(
18    Clone,
19    Copy,
20    Debug,
21    Default,
22    Deserialize,
23    Display,
24    EnumString,
25    EnumVariantNames,
26    Eq,
27    Hash,
28    Ord,
29    PartialEq,
30    PartialOrd,
31    Serialize,
32)]
33#[repr(u8)]
34#[strum(serialize_all = "snake_case")]
35pub enum GraphType {
36    Directed,
37    #[default]
38    Undirected,
39}