Trait SnowflakeGenerator

Source
pub trait SnowflakeGenerator<ID, T>
where ID: SnowflakeId, T: TimeSource<ID::Ty>,
{ type Err: Debug; // Required methods fn new(machine_id: ID::Ty, clock: T) -> Self; fn next_id(&self) -> IdGenStatus<ID>; fn try_next_id(&self) -> Result<IdGenStatus<ID>, Self::Err>; }
Expand description

A minimal interface for generating Snowflake IDs

Required Associated Types§

Required Methods§

Source

fn new(machine_id: ID::Ty, clock: T) -> Self

Source

fn next_id(&self) -> IdGenStatus<ID>

Returns the next available ID

Source

fn try_next_id(&self) -> Result<IdGenStatus<ID>, Self::Err>

A fallible version of Self::next_id that returns a Result.

§Errors
  • May return an error if the underlying generator uses a lock and it is poisoned.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<ID, T> SnowflakeGenerator<ID, T> for AtomicSnowflakeGenerator<ID, T>
where ID: SnowflakeId<Ty = u64>, T: TimeSource<ID::Ty>,

Source§

impl<ID, T> SnowflakeGenerator<ID, T> for BasicSnowflakeGenerator<ID, T>
where ID: SnowflakeId, T: TimeSource<ID::Ty>,

Source§

impl<ID, T> SnowflakeGenerator<ID, T> for LockSnowflakeGenerator<ID, T>
where ID: SnowflakeId, T: TimeSource<ID::Ty>,