1#[doc(inline)]
9pub use self::prelude::*;
10
11pub(crate) mod identifier;
12
13mod impls {
14 pub mod impl_id;
15}
16
17pub mod traits {
18 #[doc(inline)]
20 pub use self::prelude::*;
21
22 pub mod id;
23 pub mod identifier;
24
25 pub(crate) mod prelude {
26 #[doc(inline)]
27 pub use super::id::*;
28 #[doc(inline)]
29 pub use super::identifier::*;
30 }
31}
32
33pub mod types {
34 #[doc(inline)]
35 pub use self::multi_id::IndexId;
36
37 pub mod multi_id;
38
39 pub(crate) mod prelude {
40 #[doc(inline)]
41 pub use super::multi_id::IndexId;
42 }
43}
44
45pub(crate) mod prelude {
46 #[doc(inline)]
47 pub use super::identifier::Id;
48 #[doc(inline)]
49 pub use super::traits::prelude::*;
50 #[doc(inline)]
51 pub use super::types::prelude::*;
52}
53
54#[cfg(test)]
55mod tests {
56 use super::Id;
57
58 #[test]
59 fn test_id() {
60 let mut id = Id::<usize>::default();
61 assert_eq!(id.get(), &0);
62 assert_eq!(id.get_mut(), &mut 0);
63 let view = id.view();
64 assert_eq!(view.get(), &&0);
65 assert_eq!(view.copied(), id);
66 }
67
68 #[test]
69 fn test_atomic_id() {
70 let v1 = Id::atomic();
71 let v2 = Id::atomic();
72 assert_ne!(v1, v2);
73 }
74
75 #[test]
76 fn test_id_stepper() {
77 let mut id: Id<usize> = Id::zero();
78 assert_eq!(id.step(), 0);
79 assert_eq!(id.step(), 1);
80 assert_eq!(id.step(), 2);
81 assert_eq!(id.step(), 3);
82 assert_eq!(id.step(), 4);
83 assert_eq!(id, 5);
84 }
85}