#unique-identifier #identifier #sortable #uuid

no-std ulid

一个通用唯一字典序排序标识符实现

21个版本 (6个稳定版)

1.1.3 2024年7月13日
1.1.2 2024年2月3日
1.1.1 2024年1月31日
1.1.0 2023年9月11日
0.2.2 2017年7月28日

11 in 算法

Download history 61907/week @ 2024-05-03 62407/week @ 2024-05-10 76069/week @ 2024-05-17 76540/week @ 2024-05-24 74715/week @ 2024-05-31 79499/week @ 2024-06-07 78032/week @ 2024-06-14 80671/week @ 2024-06-21 69131/week @ 2024-06-28 57763/week @ 2024-07-05 61818/week @ 2024-07-12 61363/week @ 2024-07-19 60292/week @ 2024-07-26 58080/week @ 2024-08-02 60429/week @ 2024-08-09 60124/week @ 2024-08-16

每月252,010次下载
用于 258 个crate(136个直接使用)

MIT 许可证

42KB
701

ulid-rs

Build Status Crates.io docs.rs

这是ulid项目的Rust实现,该项目提供通用唯一字典序排序标识符。

快速开始

use ulid::Ulid;

// Generate a ulid
let ulid = Ulid::new();

// Generate a string for a ulid
let s = ulid.to_string();

// Create from a String
let res = Ulid::from_string(&s);

assert_eq!(ulid, res.unwrap());

crate功能

  • std (默认):用于切换是否使用stdrand。禁用此标志以支持#[no_std]
  • serde:通过serde启用对Ulid类型的序列化和反序列化。ULIDs使用ULID标准中定义的26个字符的规范表示进行序列化。提供了一个可选的ulid_as_u128模块,它通过Ulid的内部u128原始类型启用序列化。有关更多信息,请参阅文档serde文档
  • uuid:通过uuid crate的std::convert::From trait实现ULIDs和UUIDs之间的不可失败转换。

基准测试

基准测试在我的桌面电脑上运行(Win 10/WSL2 Ubuntu;Ryzen 7 5950x)。使用cargo bench运行它们。

test bench_from_string        ... bench:          13 ns/iter (+/- 0)
test bench_from_time          ... bench:          13 ns/iter (+/- 0)
test bench_generator_generate ... bench:          29 ns/iter (+/- 0)
test bench_new                ... bench:          31 ns/iter (+/- 1)
test bench_to_str             ... bench:           7 ns/iter (+/- 0)
test bench_to_string          ... bench:          19 ns/iter (+/- 0)

依赖项

~0–1MB
~23K SLoC