use crate::{Label, Value};
use std::fmt::Debug;
use std::hash::Hash;
pub trait Element: Debug {
type Label: Eq + Copy + Hash + Debug + Label + 'static;
fn label(&self) -> Self::Label;
fn value(&self, _index: &<Self::Label as Label>::Index) -> Option<Value> {
None
}
}
impl Element for () {
type Label = ();
fn label(&self) -> Self::Label {}
}
impl Element for u32 {
type Label = ();
fn label(&self) -> Self::Label {}
}
impl Element for u64 {
type Label = ();
fn label(&self) -> Self::Label {}
}
impl Element for f32 {
type Label = ();
fn label(&self) -> Self::Label {}
}
impl Element for f64 {
type Label = ();
fn label(&self) -> Self::Label {}
}