use std::time::SystemTime;
use crate::layout::BitLayout;
pub mod components;
pub mod creation;
pub mod generation;
pub mod decomposition;
#[cfg(test)]
pub mod tests;
pub use components::SnowflakeComponents;
#[derive(Copy, Clone, Debug)]
pub struct SnowflakeIdGenerator {
pub(crate) epoch: SystemTime,
pub(crate) last_time_millis: i64,
pub(crate) machine_id: i64,
pub(crate) node_id: i64,
pub(crate) idx: u32,
pub(crate) layout: BitLayout,
}
impl SnowflakeIdGenerator {
#[inline]
pub fn layout(&self) -> &BitLayout {
&self.layout
}
#[inline]
pub fn epoch(&self) -> SystemTime {
self.epoch
}
#[inline]
pub fn machine_id(&self) -> i64 {
self.machine_id
}
#[inline]
pub fn node_id(&self) -> i64 {
self.node_id
}
}