4个版本
1.3.0-alpha |
|
---|---|
1.2.0-alpha |
|
234 在 数据结构 中
748 每月下载次数
在 mti 中使用
31KB
381 行
TypeID
前缀
一个实现了《TypeID》规范中TypePrefix部分的类型安全版本的Rust库。
与TypeIdSuffix crate 结合,构成mti (Magic Type Id) crate。
使用mti (Magic Type Id) crate 实现TypeID规范的全面实现。
功能
- 类型安全:确保
TypeID
前缀符合规范。 - 验证:为
TypeID
前缀提供健壮的验证。 - 净化:提供将输入字符串清理和净化为有效
TypeID
前缀的方法。 - 零成本抽象:设计用于具有最小运行时开销。
- 可选跟踪:与
tracing
crate集成以进行日志记录(可选功能)。
安装
将此添加到您的Cargo.toml
[dependencies]
typeid_prefix = "1.1.1-beta.1"
要启用跟踪支持,请添加
[dependencies]
typeid_prefix = { version = "1.1.1-beta.1", features = ["instrument"] }
用法
基本用法
use typeid_prefix::{TypeIdPrefix, Sanitize};
use std::convert::TryFrom;
fn main() {
// Create a TypeIdPrefix from a valid string
let prefix = TypeIdPrefix::try_from("user").unwrap();
println!("Valid prefix: {}", prefix);
// Attempt to create from an invalid string
let result = TypeIdPrefix::try_from("Invalid_Prefix");
assert!(result.is_err());
// Sanitize an invalid string
let sanitized = "Invalid_Prefix123".sanitize_and_create();
println!("Sanitized prefix: {}", sanitized);
}
验证
TypeIdPrefix
类型确保所有实例都符合TypeID
规范
- 最大长度为63个字符
- 只包含小写ASCII字母和下划线
- 不以下划线开始或结束
- 以小写字母开始和结束
use typeid_prefix::TypeIdPrefix;
use std::convert::TryFrom;
fn validate_prefix(input: &str) {
match TypeIdPrefix::try_from(input) {
Ok(prefix) => println!("Valid prefix: {}", prefix),
Err(e) => println!("Invalid prefix: {}", e),
}
}
fn main() {
validate_prefix("valid_prefix");
validate_prefix("Invalid_Prefix");
validate_prefix("_invalid");
validate_prefix("toolong_toolong_toolong_toolong_toolong_toolong_toolong_toolong");
}
净化
Sanitize
trait提供了一个从任何字符串创建有效TypeIdPrefix
的方法
use typeid_prefix::Sanitize;
fn main() {
let sanitized = "Invalid String 123!@#".sanitize_and_create();
println!("Sanitized: {}", sanitized); // Outputs: invalidstring
}
可选跟踪
当启用instrument
功能时,该crate将使用tracing
crate记录验证错误
[dependencies]
typeid_prefix = { version = "1.0.0", features = ["instrument"] }
use typeid_prefix::Sanitize;
fn main() {
// Set up your tracing subscriber here
let _sanitized = "Invalid_Prefix!@#".sanitize_and_create();
// Validation errors will be logged via tracing
}
用例
- 数据库系统:使用
TypeIdPrefix
确保数据库模式或ORM映射中类型前缀的一致性和有效性。 - API开发:验证和净化需要类型前缀的API端点的用户输入。
- 代码生成:为代码生成工具或宏生成有效的类型前缀。
- 配置管理:确保配置键或标识符符合一致的格式。
安全性和正确性
此软件包已经经过彻底测试和验证
- 全面单元测试
- 使用
proptest
的属性测试 - 模糊测试
- 使用 Kani 的形式验证
这些措施确保软件包在正常使用情况下行为正确且不会崩溃。
最低支持的 Rust 版本 (MSRV)
此软件包保证可以在 Rust 1.60.0 及更高版本上编译。
许可证
本项目采用以下任一许可证:
- Apache License, Version 2.0, (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任由您选择。
贡献
欢迎贡献!请随时提交拉取请求。
致谢
此软件包实现了 Jetpack.io 创建的 TypeID 规范 的一部分。
依赖项
~215KB