pub struct SnowflakeTwitterId { /* private fields */ }Expand description
A 64-bit Snowflake ID using the classic Twitter layout
- 41 bits timestamp
- 10 bits machine ID
- 12 bits sequence
| timestamp (41) | machine_id (10) | sequence (12) |Implementations§
Source§impl SnowflakeTwitterId
impl SnowflakeTwitterId
Sourcepub const TIMESTAMP_MASK: u64 = 2_199_023_255_551u64
pub const TIMESTAMP_MASK: u64 = 2_199_023_255_551u64
Bitmask for extracting the 41-bit timestamp field from a packed ID. Stored in bits 22 through 62 (excluding the sign bit at bit 63).
Sourcepub const MACHINE_ID_MASK: u64 = 1_023u64
pub const MACHINE_ID_MASK: u64 = 1_023u64
Bitmask for extracting the 10-bit machine ID field. Occupies bits 12 through 21.
Sourcepub const SEQUENCE_MASK: u64 = 4_095u64
pub const SEQUENCE_MASK: u64 = 4_095u64
Bitmask for extracting the 12-bit sequence field. Occupies bits 0 through 11.
Sourcepub const TIMESTAMP_SHIFT: u64 = 22u64
pub const TIMESTAMP_SHIFT: u64 = 22u64
Number of bits to shift the timestamp to its correct position (bit 22).
Sourcepub const MACHINE_ID_SHIFT: u64 = 12u64
pub const MACHINE_ID_SHIFT: u64 = 12u64
Number of bits to shift the machine ID to its correct position (bit 12).
Sourcepub const SEQUENCE_SHIFT: u64 = 0u64
pub const SEQUENCE_SHIFT: u64 = 0u64
Number of bits to shift the sequence field (always 0, since it starts at the LSB).
pub const fn from(timestamp: u64, machine_id: u64, sequence: u64) -> Self
Sourcepub const fn machine_id(&self) -> u64
pub const fn machine_id(&self) -> u64
Extracts the machine ID from the packed ID.
Sourcepub fn to_padded_string(&self) -> String
pub fn to_padded_string(&self) -> String
Returns the ID as a zero-padded 20-digit string.
Trait Implementations§
Source§impl Base32 for SnowflakeTwitterId
impl Base32 for SnowflakeTwitterId
Source§impl Clone for SnowflakeTwitterId
impl Clone for SnowflakeTwitterId
Source§fn clone(&self) -> SnowflakeTwitterId
fn clone(&self) -> SnowflakeTwitterId
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SnowflakeTwitterId
impl Debug for SnowflakeTwitterId
Source§impl<'de> Deserialize<'de> for SnowflakeTwitterId
impl<'de> Deserialize<'de> for SnowflakeTwitterId
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Display for SnowflakeTwitterId
impl Display for SnowflakeTwitterId
Source§impl Hash for SnowflakeTwitterId
impl Hash for SnowflakeTwitterId
Source§impl Ord for SnowflakeTwitterId
impl Ord for SnowflakeTwitterId
Source§fn cmp(&self, other: &SnowflakeTwitterId) -> Ordering
fn cmp(&self, other: &SnowflakeTwitterId) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialEq for SnowflakeTwitterId
impl PartialEq for SnowflakeTwitterId
Source§impl PartialOrd for SnowflakeTwitterId
impl PartialOrd for SnowflakeTwitterId
Source§impl Serialize for SnowflakeTwitterId
impl Serialize for SnowflakeTwitterId
Source§impl Snowflake for SnowflakeTwitterId
impl Snowflake for SnowflakeTwitterId
Source§const ZERO: Self::Ty = {transmute(0x0000000000000000): <id::SnowflakeTwitterId as id::Snowflake>::Ty}
const ZERO: Self::Ty = {transmute(0x0000000000000000): <id::SnowflakeTwitterId as id::Snowflake>::Ty}
Zero value (used for resetting the sequence)
Source§const ONE: Self::Ty = {transmute(0x0000000000000001): <id::SnowflakeTwitterId as id::Snowflake>::Ty}
const ONE: Self::Ty = {transmute(0x0000000000000001): <id::SnowflakeTwitterId as id::Snowflake>::Ty}
One value (used for incrementing the sequence)
Source§fn max_timestamp() -> Self::Ty
fn max_timestamp() -> Self::Ty
Returns the maximum possible value for the timestamp field.
Source§fn machine_id(&self) -> Self::Ty
fn machine_id(&self) -> Self::Ty
Returns the machine ID portion of the ID.
Source§fn max_machine_id() -> Self::Ty
fn max_machine_id() -> Self::Ty
Returns the maximum possible value for the machine_id field.
Source§fn max_sequence() -> Self::Ty
fn max_sequence() -> Self::Ty
Returns the maximum possible value for the sequence field.
Source§fn from_components(
timestamp: Self::Ty,
machine_id: Self::Ty,
sequence: Self::Ty,
) -> Self
fn from_components( timestamp: Self::Ty, machine_id: Self::Ty, sequence: Self::Ty, ) -> Self
Constructs a new Snowflake ID from its components.
fn to_padded_string(&self) -> String
Source§fn has_sequence_room(&self) -> bool
fn has_sequence_room(&self) -> bool
Returns true if the current sequence value can be incremented.
Source§fn next_sequence(&self) -> Self::Ty
fn next_sequence(&self) -> Self::Ty
Returns the next sequence value.
Source§fn increment_sequence(&self) -> Self
fn increment_sequence(&self) -> Self
Returns a new ID with the sequence incremented.
Source§fn rollover_to_timestamp(&self, ts: Self::Ty) -> Self
fn rollover_to_timestamp(&self, ts: Self::Ty) -> Self
Returns a new ID for a newer timestamp with sequence reset to zero.
impl Copy for SnowflakeTwitterId
impl Eq for SnowflakeTwitterId
impl StructuralPartialEq for SnowflakeTwitterId
Auto Trait Implementations§
impl Freeze for SnowflakeTwitterId
impl RefUnwindSafe for SnowflakeTwitterId
impl Send for SnowflakeTwitterId
impl Sync for SnowflakeTwitterId
impl Unpin for SnowflakeTwitterId
impl UnwindSafe for SnowflakeTwitterId
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