evault_core/traits/
id_gen.rs1use uuid::Uuid;
8
9pub trait IdGenerator: Send + Sync {
11 fn next(&self) -> Uuid;
13}
14
15#[derive(Debug, Default, Clone, Copy)]
17pub struct UuidV4IdGenerator;
18
19impl IdGenerator for UuidV4IdGenerator {
20 fn next(&self) -> Uuid {
21 Uuid::new_v4()
22 }
23}
24
25#[cfg(test)]
26mod tests {
27 use super::*;
28
29 #[test]
30 fn uuid_v4_generator_returns_unique_ids() {
31 let g = UuidV4IdGenerator;
32 let a = g.next();
33 let b = g.next();
34 assert_ne!(a, b);
35 }
36}