1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//! # sparkid
//!
//! Fast, time-sortable, 21-char Base58 unique ID generator.
//!
//! Each ID is composed of three parts:
//! - 8-char timestamp prefix (milliseconds since epoch, Base58-encoded)
//! - 6-char monotonic counter (randomly seeded each millisecond, incremented)
//! - 7-char random tail (independently random per ID)
//!
//! IDs are strictly monotonically increasing within a single generator instance
//! (or thread, when using [`SparkId::new`]).
//!
//! # Examples
//!
//! ```
//! use sparkid::SparkId;
//!
//! // Simple usage — zero-allocation, thread-safe
//! let id = SparkId::new();
//! let s = id.as_str();
//! assert_eq!(s.len(), 21);
//! println!("{id}"); // Display, no heap allocation
//! let owned: String = id.into(); // Into<String> when needed
//!
//! // Advanced usage — own generator instance
//! let mut gen = sparkid::IdGenerator::new();
//! let id = gen.next_id();
//! let s = id.as_str();
//! assert_eq!(s.len(), 21);
//! ```
extern crate alloc;
extern crate std;
pub use ;