use uuid::Uuid;
use crate::lib::Add;
use crate::prelude::Generator;
#[derive(Clone, Debug)]
pub struct UuidGenerator;
impl Generator<u128> for UuidGenerator {
fn generate(&self) -> u128 {
Uuid::now_v7().as_u128()
}
fn with_offset(&self, offset: u128) -> u128 {
self.generate().add(offset)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_uuid_generator() {
let generator = UuidGenerator;
let value = generator.generate();
let value_2 = generator.generate();
assert_ne!(value, value_2);
}
#[test]
fn test_uuid_generator_with_offset() {
let generator = UuidGenerator;
let value = generator.with_offset(10);
let value_2 = generator.with_offset(10);
assert_ne!(value, value_2);
}
}