dos_uid/
lib.rs

1/// Defines the data type associated with unique identifier data type
2pub trait UniqueIdentifier: Send + Sync {
3    type Data;
4}
5
6pub use uid_derive::UID;
7
8#[cfg(test)]
9mod tests {
10    use crate as uid;
11    use uid_derive::UID;
12
13    #[derive(UID)]
14    #[uid(data = "u8")]
15    pub enum A {}
16
17    #[test]
18    fn impl_uid() {
19        enum U {}
20        impl uid::UniqueIdentifier for U {
21            type Data = f64;
22        }
23        let _: <U as uid::UniqueIdentifier>::Data = 1f64;
24    }
25
26    #[test]
27    fn derive() {
28        #[derive(UID)]
29        enum U {}
30        let _: <U as uid::UniqueIdentifier>::Data = vec![1f64];
31    }
32
33    #[test]
34    fn derive_uid() {
35        #[derive(UID)]
36        #[uid(data = "Vec<f32>")]
37        enum U {}
38        let _: <U as uid::UniqueIdentifier>::Data = vec![1f32];
39    }
40}