nuit_core/utils/
has_id.rs

1use crate::Id;
2
3/// An identifiable value.
4pub trait HasId {
5    fn id(&self) -> Id;
6}
7
8macro_rules! impl_integer_has_id {
9    ($($tys:ty),*) => {
10        $(impl HasId for $tys {
11            fn id(&self) -> Id {
12                Id::index(*self as i64)
13            }
14        })*
15    };
16}
17
18impl_integer_has_id!(
19    u8, u16, u32, u64, usize,
20    i8, i16, i32, i64, isize
21);
22
23impl HasId for String {
24    fn id(&self) -> Id {
25        Id::string(self)
26    }
27}
28
29impl<'a> HasId for &'a str {
30    fn id(&self) -> Id {
31        Id::string(*self)
32    }
33}