11 个版本

0.3.4 2021 年 4 月 10 日
0.3.3 2021 年 2 月 28 日
0.2.2 2021 年 2 月 21 日
0.1.2 2021 年 2 月 20 日

Rust 模式 中排名第 1782

Download history • Rust 包仓库 366/week @ 2024-03-24 • Rust 包仓库 616/week @ 2024-03-31 • Rust 包仓库 293/week @ 2024-04-07 • Rust 包仓库 612/week @ 2024-04-14 • Rust 包仓库 541/week @ 2024-04-21 • Rust 包仓库 516/week @ 2024-04-28 • Rust 包仓库 449/week @ 2024-05-05 • Rust 包仓库 868/week @ 2024-05-12 • Rust 包仓库 451/week @ 2024-05-19 • Rust 包仓库 508/week @ 2024-05-26 • Rust 包仓库 449/week @ 2024-06-02 • Rust 包仓库 252/week @ 2024-06-09 • Rust 包仓库 252/week @ 2024-06-16 • Rust 包仓库 243/week @ 2024-06-23 • Rust 包仓库 162/week @ 2024-06-30 • Rust 包仓库 148/week @ 2024-07-07 • Rust 包仓库

每月下载量 821
用于 playwright

MIT 许可协议

29KB
636 行代码(不包括注释)

STRONG — crates.io MIT

Rust 的强类型化 String

Rust 是一种静态强类型系统编程语言。我们可以创建一个新的类型来封装原始数据。

struct Age(i32);
struct Email(String);

这里有一个问题,Rust 中有两种类型的字符串,很难同时为 String&str 创建强类型。

STRONG 提供了两种类型:拥有所有权的 StrongBuf 和非固定大小的 Strong

use strong::{validators::Email, Strong, StrongBuf, Validator};

fn login(email: &Strong<Email>, password: &Strong<Password>) { .. }

let email: StrongBuf<Email> = ..
let password: StrongBuf<Password> = ..
login(&email, &password);

Email 需要 some_validators 功能。

入门

use strong::{validators::Email, Strong, StrongBuf, Validator};

enum Password {}
impl Validator for Password {
    type Err = std::convert::Infallible;
}

let email: StrongBuf<Email> = StrongBuf::<Email>::validate("a@example.com".into()).unwrap();
let password: &Strong<Password> = Strong::<Password>::validate("b").unwrap();

缩写

使用 shorthand 功能,导出 StrS,它们可以替代 StrongBufStrong

let email: StrongBuf<Email> = StrongBuf::validate("foo".to_string()).unwrap();
let email: Str<Email> = Str::validate("foo".to_string()).unwrap();

许可协议

MIT 许可协议下授权(LICENSE-MIThttps://open-source.org.cn/licenses/MIT

贡献

欢迎!

依赖关系

~0–1.4MB
~30K SLoC