#id #uuid #guid #shortid

tinyid

一个类似于 UUID 的简短 ID 类型,用户更容易输入

4 个稳定版本

1.0.3 2023 年 1 月 18 日
1.0.1 2022 年 5 月 4 日

#1549 in 解析器实现

Download history 78/week @ 2024-03-13 119/week @ 2024-03-20 35/week @ 2024-03-27 67/week @ 2024-04-03 134/week @ 2024-04-10 62/week @ 2024-04-17 142/week @ 2024-04-24 98/week @ 2024-05-01 119/week @ 2024-05-08 106/week @ 2024-05-15 56/week @ 2024-05-22 170/week @ 2024-05-29 194/week @ 2024-06-05 130/week @ 2024-06-12 164/week @ 2024-06-19 75/week @ 2024-06-26

595 每月下载量

MPL-2.0 许可证

25KB
476

Rust coveralls.io codecov

TinyId

一种小型、8 字节 ID 类型,适用于需要“相当独特”且不需要具有加密安全/正确性的标识符的 Rust 应用程序。它们可以是随机生成的,但没有进行任何工作来确保这些随机生成是安全的(所有 RNG 都通过优秀的 fastrand crate 完成)。

我创建这个类型是因为我需要 大部分 / 某种程度上 随机的标识符,用户可以轻松阅读和重新输入,但也会防止在小范围内(小于一百万左右)的使用中出现冲突。

示例 collision.rscollision_average.rs请注意,这可能需要相当长的时间才能运行)可以运行以了解在发生冲突之前可以生成多少个 ID,但这最终取决于运气。
通常,平均 50-100 次给了我 2000 万左右的成果(在冲突之前创建的 ID),但不幸的 RNG 导致结果低至 600 万到 800 万。

依赖项

根据是否需要序列化,该包有一个或两个依赖项。 fastrand 用于 RNG,serde 用于 de/序列化 只有 在启用 serde 功能标志的情况下。

示例

更多示例可以在 ./examples/basic.rs 中找到。

use tinyid::TinyId;

// Generate a random ID.
let mut id = TinyId::random();
// Ensure that the ID is valid.
assert!(id.is_valid());
assert!(!id.is_null());

id.make_null();
assert!(!id.is_valid());
assert!(id.is_null());
assert_eq!(id, TinyId::null());

功能

该包只有一个功能,即 serde,这将启用 TinyId 类型的 serde 序列化和反序列化。它还将引入 serde 依赖项。

依赖项

~205KB