4 个稳定版本
1.0.3 | 2023 年 1 月 18 日 |
---|---|
1.0.1 | 2022 年 5 月 4 日 |
#1549 in 解析器实现
595 每月下载量
25KB
476 行
TinyId
一种小型、8 字节 ID 类型,适用于需要“相当独特”且不需要具有加密安全/正确性的标识符的 Rust 应用程序。它们可以是随机生成的,但没有进行任何工作来确保这些随机生成是安全的(所有 RNG 都通过优秀的 fastrand
crate 完成)。
我创建这个类型是因为我需要 大部分 / 某种程度上 随机的标识符,用户可以轻松阅读和重新输入,但也会防止在小范围内(小于一百万左右)的使用中出现冲突。
示例 collision.rs
或 collision_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