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 366/week @ 2024-03-24 616/week @ 2024-03-31 293/week @ 2024-04-07 612/week @ 2024-04-14 541/week @ 2024-04-21 516/week @ 2024-04-28 449/week @ 2024-05-05 868/week @ 2024-05-12 451/week @ 2024-05-19 508/week @ 2024-05-26 449/week @ 2024-06-02 252/week @ 2024-06-09 252/week @ 2024-06-16 243/week @ 2024-06-23 162/week @ 2024-06-30 148/week @ 2024-07-07

每月下载量 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("[email protected]".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://opensource.org/licenses/MIT

贡献

欢迎!

依赖关系

~0–1.4MB
~30K SLoC