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);