1use 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}