scsys_core/traits/
classify.rs

1/*
2    Appellation: classify <specs>
3    Contrib: FL03 <jo3mccain@icloud.com>
4*/
5
6/// Interface for classifiable objects
7pub trait Classifiable {
8    type Class: Classifier;
9
10    fn class(&self) -> &Self::Class;
11}
12
13/// Denotes an object that may be used as a classifier
14pub trait Classifier {}
15
16macro_rules! classifier {
17    ($($t:ty),*) => {
18        $(
19            classifier!(@loop $t);
20        )*
21    };
22    (@loop $t:ty) => {
23        impl Classifier for $t {}
24    };
25}
26
27classifier!(f32, f64, i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, &str, char);
28
29#[cfg(feature = "alloc")]
30classifier!(alloc::string::String);