nuit-core 0.2.0

Core structures and traits for Nuit
Documentation
use crate::Id;

/// An identifiable value.
pub trait HasId {
    fn id(&self) -> Id;
}

macro_rules! impl_integer_has_id {
    ($($tys:ty),*) => {
        $(impl HasId for $tys {
            fn id(&self) -> Id {
                Id::index(*self as i64)
            }
        })*
    };
}

impl_integer_has_id!(
    u8, u16, u32, u64, usize,
    i8, i16, i32, i64, isize
);

impl HasId for String {
    fn id(&self) -> Id {
        Id::string(self)
    }
}

impl<'a> HasId for &'a str {
    fn id(&self) -> Id {
        Id::string(*self)
    }
}