2个不稳定版本
0.2.0 | 2023年4月10日 |
---|---|
0.1.0 | 2018年10月6日 |
#19 in #id-generator
10KB
144 代码行,不包括注释
Ticket
受 rs/xid 启发的唯一ID生成器。
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
) (
--- ---
9 _____ ___ ___ _ _____ _____ 7
6 |_ _|_ _/ __| |/ / __|_ _| 1
3 | | | | (__| ' <| _| | | 6
8 |_| |___\___|_|\_\___| |_| 5
0 2
--- ---
)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _(
关于Ticket
由Ticket生成的ID仅占用12字节。
- 4字节来自Unix时间戳,
- 3字节来自机器ID,
- 2字节来自当前进程ID,以及
- 3字节计数器,起始值为随机值。
用法
将以下内容放入您的 Cargo.toml
[dependencies]
ticket = { git = "https://github.com/Hanaasagi/ticket" }
使用方式如下
extern crate ticket;
use ticket::{Ticketing, encode, decode};
fn main() {
// create a `Ticketing` to generate ticket number.
let id = Ticketing::new().gen();
// using base32 encoding.
println!("{}", id); // "bekcs9rrtf0263qgv5r0"
// as 12 bytes array.
println!("{:?}", id.as_bytes()); // [91, 168, 206, 39, 123, 235, 192, 35, 15, 80, 249, 118]
// encode and dedode
assert_eq!(decode(&encode(id)), id);
}
许可证
BSD 3-Clause 许可证 版权所有 (c) 2018, Hanaasagi
依赖
~1–1.3MB
~19K SLoC