uuid::timestamp::context

Struct ContextV7

source
pub struct ContextV7 { /* private fields */ }
Expand description

An unsynchronized, reseeding counter that produces 42-bit values.

This type works by:

  1. Reseeding the counter each millisecond with a random 41-bit value. The 42nd bit is left unset so the counter can safely increment over the millisecond.
  2. Wrapping the counter back to zero if it overflows its 42-bit storage and adding a millisecond to the timestamp.

This type can be used when constructing version 7 UUIDs. When used to construct a version 7 UUID, the 42-bit counter will be padded with random data. This type can be used to maintain ordering of UUIDs within the same millisecond.

This type should not be used when constructing version 1 or version 6 UUIDs. When used to construct a version 1 or version 6 UUID, only the 14 least significant bits of the counter will be used.

Implementations§

source§

impl ContextV7

source

pub const fn new() -> Self

Construct a new context that will reseed its counter on the first non-zero timestamp it receives.

Trait Implementations§

source§

impl ClockSequence for ContextV7

source§

type Output = u64

The type of sequence returned by this counter.
source§

fn generate_sequence(&self, seconds: u64, subsec_nanos: u32) -> Self::Output

Get the next value in the sequence to feed into a timestamp. Read more
source§

fn generate_timestamp_sequence( &self, seconds: u64, subsec_nanos: u32, ) -> (Self::Output, u64, u32)

Get the next value in the sequence, potentially also adjusting the timestamp. Read more
source§

fn usable_bits(&self) -> usize

The number of usable bits from the least significant bit in the result of ClockSequence::generate_sequence or ClockSequence::generate_timestamp_sequence. Read more
source§

impl Debug for ContextV7

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl RefUnwindSafe for ContextV7

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

source§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.