pub struct UuidV7Generator<Id>(/* private fields */);Expand description
Generates ids from a time-ordered (v7) UUID.
§Examples
use ddd_toolkit_core::adapter::id::UuidV7Generator;
use ddd_toolkit_core::domain::{EntityId, ValueObject};
use ddd_toolkit_core::port::id::IdGenerator;
use std::convert::Infallible;
use std::fmt::Display;
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
struct OrderId(uuid::Uuid);
impl ValueObject for OrderId {}
impl Display for OrderId {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.0)
}
}
impl EntityId for OrderId {}
impl TryFrom<uuid::Uuid> for OrderId {
type Error = Infallible;
fn try_from(value: uuid::Uuid) -> Result<Self, Self::Error> {
Ok(Self(value))
}
}
let generator = UuidV7Generator::<OrderId>::new();
// v7 ids are time-ordered, so ids minted later sort after earlier ones
let first = generator.generate();
let second = generator.generate();
assert!(first <= second);Implementations§
Source§impl<Id> UuidV7Generator<Id>
impl<Id> UuidV7Generator<Id>
Sourcepub fn new() -> UuidV7Generator<Id>
pub fn new() -> UuidV7Generator<Id>
Creates a new UuidV7Generator.
Trait Implementations§
Source§impl<Id> Clone for UuidV7Generator<Id>where
Id: Clone,
impl<Id> Clone for UuidV7Generator<Id>where
Id: Clone,
Source§fn clone(&self) -> UuidV7Generator<Id>
fn clone(&self) -> UuidV7Generator<Id>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<Id> Debug for UuidV7Generator<Id>where
Id: Debug,
impl<Id> Debug for UuidV7Generator<Id>where
Id: Debug,
Source§impl<Id> Default for UuidV7Generator<Id>
impl<Id> Default for UuidV7Generator<Id>
Source§fn default() -> UuidV7Generator<Id>
fn default() -> UuidV7Generator<Id>
Returns the “default value” for a type. Read more
Source§impl<Id> IdGenerator<Id> for UuidV7Generator<Id>
impl<Id> IdGenerator<Id> for UuidV7Generator<Id>
Auto Trait Implementations§
impl<Id> Freeze for UuidV7Generator<Id>
impl<Id> RefUnwindSafe for UuidV7Generator<Id>
impl<Id> Send for UuidV7Generator<Id>
impl<Id> Sync for UuidV7Generator<Id>
impl<Id> Unpin for UuidV7Generator<Id>
impl<Id> UnsafeUnpin for UuidV7Generator<Id>
impl<Id> UnwindSafe for UuidV7Generator<Id>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more