petgraph already defines many traits for unidirected and undirected graphs, we should use them instead of spending time on creating our own.