2个不稳定版本

0.2.0 2023年4月10日
0.1.0 2018年10月6日

#19 in #id-generator

BSD-3-Clause

10KB
144 代码行,不包括注释

Ticket

rs/xid 启发的唯一ID生成器。

ticket on GitHub Action ticket on crates.io ticket on docs.rs

   _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  )                                (
---                                  ---
  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