pub trait Edge { type ID; type DATA; fn source(&self) -> Self::ID; fn target(&self) -> Self::ID; fn data(&self) -> &Self::DATA; }