prefixed_tsid/
resources.rs1use std::hash::Hash;
2use std::fmt::Debug;
3
4pub trait TSIDResource: Eq + PartialEq + Clone + Copy + Hash + Send + Debug {
5 fn prefix() -> Option<String>;
6}
7
8#[macro_export]
9macro_rules! id_resource_type {
10 ($struct_name: ident, $prefix: literal) => {
11 #[derive(Eq, PartialEq, Clone, Copy, Debug, Hash)]
12 pub struct $struct_name;
13 impl TSIDResource for $struct_name {
14 fn prefix() -> Option<String> {
15 Some($prefix.to_owned())
16 }
17 }
18 };
19}
20
21#[derive(Eq, PartialEq, Clone, Copy, Debug, Hash)]
22pub struct IDUnknown;
23impl TSIDResource for IDUnknown {
24 fn prefix() -> Option<String> {
25 None
26 }
27}