项目作者: Hanaasagi

项目描述 :
:ticket: Unique ID Generator
高级语言: Rust
项目地址: git://github.com/Hanaasagi/ticket.git
创建时间: 2018-09-22T00:59:04Z
项目社区:https://github.com/Hanaasagi/ticket

开源协议:BSD 3-Clause "New" or "Revised" License

下载


Ticket

Unique-ID-Generator inspired by rs/xid.

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

  1. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2. --- ---
  3. 9 _____ ___ ___ _ _____ _____ 7
  4. 6 |_ _|_ _/ __| |/ / __|_ _| 1
  5. 3 | | | | (__| ' <| _| | | 6
  6. 8 |_| |___\___|_|\_\___| |_| 5
  7. 0 2
  8. --- ---
  9. )_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _(

About Ticket

The ID generated from Ticket only occupies 12 bytes.

  • 4-byte from unix timestamp,
  • 3-byte from machine id,
  • 2-byte from current process id, and
  • 3-byte counter which starting with a random value.

Usage

Put this in your Cargo.toml:

  1. [dependencies]
  2. ticket = { git = "https://github.com/Hanaasagi/ticket" }

Use it like following

  1. extern crate ticket;
  2. use ticket::{Ticketing, encode, decode};
  3. fn main() {
  4. // create a `Ticketing` to generate ticket number.
  5. let id = Ticketing::new().gen();
  6. // using base32 encoding.
  7. println!("{}", id); // "bekcs9rrtf0263qgv5r0"
  8. // as 12 bytes array.
  9. println!("{:?}", id.as_bytes()); // [91, 168, 206, 39, 123, 235, 192, 35, 15, 80, 249, 118]
  10. // encode and dedode
  11. assert_eq!(decode(&encode(id)), id);
  12. }

License

BSD 3-Clause License Copyright (c) 2018, Hanaasagi