1pub 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}