use crate::traits::GraphType;
pub trait NodeAttr {
fn set_name(&mut self, name: Option<&str>);
fn set_label(&mut self, label: Option<usize>);
}
pub trait EdgeAttr {
fn set_name(&mut self, name: Option<&str>);
fn set_label(&mut self, label: Option<usize>);
}
pub trait GraphDrawer<'a, G>
where
G: GraphType,
{
type NodeAttr: NodeAttr;
type EdgeAttr: EdgeAttr;
fn node_default(&self) -> &Self::NodeAttr;
fn node_default_mut(&mut self) -> &mut Self::NodeAttr;
fn node(&self, u: G::Node<'_>) -> &Self::NodeAttr;
fn node_mut(&mut self, u: G::Node<'_>) -> &mut Self::NodeAttr;
fn edge_default(&self) -> &Self::EdgeAttr;
fn edge_default_mut(&mut self) -> &mut Self::EdgeAttr;
fn edge(&self, e: G::Edge<'_>) -> &Self::EdgeAttr;
fn edge_mut(&mut self, e: G::Edge<'_>) -> &mut Self::EdgeAttr;
fn add_drawing(&mut self);
}