| use std::marker::PhantomData; | |
| pub struct Directed; | |
| pub struct Undirected; | |
| pub struct Graph<N, E, Ty = Directed> { | |
| nodes: Vec<PhantomData<N>>, | |
| edges: Vec<PhantomData<E>>, | |
| ty: PhantomData<Ty>, | |
| } | |
| impl<N, E> Graph<N, E, Directed> { | |
| pub fn new() -> Self { | |
| Graph{nodes: Vec::new(), edges: Vec::new(), ty: PhantomData} | |
| } | |
| } | |
| impl<N, E> Graph<N, E, Undirected> { | |
| pub fn new_undirected() -> Self { | |
| Graph{nodes: Vec::new(), edges: Vec::new(), ty: PhantomData} | |
| } | |
| } |