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 machine_id: i32,
pub node_id: i32,
pub(crate) idx: u16,
pub(crate) layout: BitLayout,
}
impl SnowflakeIdGenerator {
#[inline]
pub fn layout(&self) -> &BitLayout {
&self.layout
}
#[inline]
pub fn epoch(&self) -> SystemTime {
self.epoch
}
}