3个版本
1.2.0-alpha |
|
---|---|
1.1.0 |
|
1.0.2-beta.1 | 2024年7月13日 |
1.0.1-beta.1 | 2024年7月12日 |
1.0.0 |
|
491 在 编码
每月 380 次下载
在 mti 中使用
35KB
404 行
TypeId
Suffix
实现了《TypeID》规范后缀部分的Rust库。它提供了处理TypeId
后缀的功能,这些后缀是UUID的base32编码表示,用于TypeId
系统。
与TypeIdPrefix crate结合,组成mti (Magic Type Id) crate。
使用mti (Magic Type Id) crate以全面实现TypeID规范。
特性
- UUID版本支持:实现了对
UUIDv7
和其他UUID版本的支持。 - 灵活的架构:泛型实现可以处理各种UUID版本。
- Base32编码/解码:高效地对UUID进行base32编码和解码。
- 错误处理:对无效后缀和UUID提供全面的错误类型。
- 验证:对
TypeId
后缀和UUID进行强大的验证。 - 零成本抽象:设计为具有最小的运行时开销。
- 可选跟踪:与
tracing
crate集成用于日志记录(可选特性)。
安装
将其添加到您的Cargo.toml
[dependencies]
typeid_suffix = "1.0.2-beta.1"
要启用可选功能
[dependencies]
typeid_suffix = { version = "1.0.2-beta.1", features = ["instrument"] }
使用方法
基本使用
use std::str::FromStr;
use typeid_suffix::prelude::*;
use uuid::Uuid;
fn main() {
// Create a `TypeId`suffix from a `UUIDv7`
let uuid = Uuid::now_v7();
let suffix = TypeIdSuffix::new(uuid).expect("Valid `UUIDv7`");
println!("TypeID suffix: {}", suffix);
// Parse a `TypeId`suffix from a string
let parsed_suffix = TypeIdSuffix::from_str("01h455vb4pex5vsknk084sn02q").expect("Valid suffix");
// Convert back to a UUID
let recovered_uuid: Uuid = suffix.try_into().expect("Valid UUID");
assert_eq!(uuid, recovered_uuid);
}
处理其他UUID版本
use typeid_suffix::prelude::*;
use uuid::Uuid;
fn main() {
let uuid = Uuid::new_v4();
let suffix = TypeIdSuffix::new(uuid).expect("Valid UUID");
println!("TypeID suffix for UUIDv4: {}", suffix);
}
错误处理
该包为各种失败情况提供详细的错误类型
use typeid_suffix::prelude::*;
use std::str::FromStr;
fn main() {
let result = TypeIdSuffix::from_str("invalid_suffix");
match result {
Ok(_) => println!("Valid suffix"),
Err(e) => println!("Invalid suffix: {}", e),
}
}
可选跟踪
当启用instrument
特性时,该包将使用tracing
crate记录操作
[dependencies]
typeid_suffix = { version = "1.0.2-beta.1", features = ["instrument"] }
用例
- 分布式系统:为分布式系统生成全局唯一、可排序的标识符。
- 数据库系统:为数据库记录创建紧凑的base32编码标识符。
- API开发:使用
TypeId
后缀作为API响应的一部分或用于资源标识。 - 基于时间的排序:利用基于
UUIDv7
的TypeId
后缀的可排序性进行时间排序数据。
安全和正确性
此软件包已经经过彻底测试和验证
- 全面的单元测试
- 使用
proptest
进行基于属性的测试 - 模糊测试
这些措施确保软件包在各种输入和条件下表现正确和安全。
最小支持的 Rust 版本 (MSRV)
本软件包保证可以在 Rust 1.60.0 及以后的版本中编译。
许可证
本项目许可协议为以下之一
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
欢迎贡献!请随时提交 Pull Request。
鸣谢
本软件包实现了 Jetpack.io 创建的 TypeID 规范 的一部分。
依赖项
~490KB