#uuid #unique #guid #crockford

crockford-uuid

用于生成和解析 Crockford Base32 标识符的库

3 个版本

0.1.2 2023年5月27日
0.1.1 2023年5月27日
0.1.0 2023年5月27日

#19 in #guid

每月37次下载

MIT 许可证

11KB
211 行代码(不含注释)

crockford-uuid

以下是一个 crockford-uuid 的示例

4s0y2vz7sf4vghnznytz9gvq6

crockford-uuid Uuid 是一个独特的 120 位值,存储为 15 字节标识符,并通过标识符计算得出的固定数字校验字符,用于值完整性检查。

唯一性属性并不严格保证,然而在实际应用中,由于 120 位的密钥空间大约与地球上存在的细菌细胞数量相当,因此无意中发生冲突的可能性极低。 :)

入门

将以下内容添加到您的 Cargo.toml

crockford-uuid = "0.1.2"

当您需要标识符时,可以生成一个

use crockford-uuid::Uuid;

let id = Uuid::new();

如果您有一个 crockford-uuid 值,您可以使用其字符串字面量、BigUint 和 Bytes 值

use uuid::Uuid;

const from_string_lit: Uuid = "4s0y2vz7sf4vghnznytz9gvq6".try_into().unwrap();
const from_big_uint: Uuid = BigUint::parse_bytes(b"471569087780948647371060810118848519319753452797", 10).unwrap().try_into().unwrap();

您还可以将 crockford-uuid 转换为字符串字面量、BigUint、Vec<u8>(字节)

const to_str = Uuid::to_string();
const to_big_uint: BigUint = Uuid::new().into();
const to_vec: Vec<u8> = Uuid::new().into();

有关使用 crockford-uuid 的更多详细信息,请参阅库文档

参考资料

https://learning.oreilly.com/library/view/api-design-patterns/9781617295850/OEBPS/Text/06.htm#:-:text=6.3.3 https://www.crockford.com/base32.html

依赖关系

~8MB
~233K SLoC