#string #newtype #validation #normalization #wrapper #reduce-boilerplate

无 std aliri_braid

通过强类型化减少样板代码,提高和强化字符串

18 个版本

0.4.0 2023 年 5 月 26 日
0.3.1 2022 年 11 月 2 日
0.2.4 2022 年 7 月 21 日
0.2.3 2022 年 6 月 15 日
0.1.5 2021 年 5 月 20 日

#205 in Rust 模式

Download history 41157/week @ 2024-03-14 39696/week @ 2024-03-21 50430/week @ 2024-03-28 43993/week @ 2024-04-04 47633/week @ 2024-04-11 49299/week @ 2024-04-18 44321/week @ 2024-04-25 39284/week @ 2024-05-02 43154/week @ 2024-05-09 42165/week @ 2024-05-16 32462/week @ 2024-05-23 33362/week @ 2024-05-30 32011/week @ 2024-06-06 35715/week @ 2024-06-13 33511/week @ 2024-06-20 32189/week @ 2024-06-27

138,198 每月下载量
20 个 (16 直接) 仓库中使用

MIT/Apache

47KB
245

aliri_braid

Build Status

提高和强化您的字符串

强类型化的 API 减少了传递未类型化字符串时的错误和混淆。Braid 通过使创建字符串值的包装变得无痛,帮助实现这一目标,确保每次都正确地使用它们。

以下是关于编织的文档和实现示例,以及 aliri_braid_examples 仓库文档中的示例。

使用方法

通过将 #[braid] 添加到结构定义中创建编织。宏将负责自动更新结构的表示以包装字符串并生成强类型的借用形式。

use aliri_braid::braid;

#[braid]
pub struct DatabaseName;

还支持自定义字符串类型的编织,只要它们实现了一组预期的特质。如果没有指定,将使用当前命名空间中名为 String 的类型。

use aliri_braid::braid;
use compact_str::CompactString as String;

#[braid]
pub struct UserId;

一旦创建,编织就可以作为强类型、不可变的字符串传递。

fn take_strong_string(n: DatabaseName) {}
fn borrow_strong_string(n: &DatabaseNameRef) {}

let owned = DatabaseName::new(String::from("mongo"));
borrow_strong_string(&owned);
take_strong_string(owned);

编织也可以用于字符串化接口。

fn take_raw_string(s: String) {}
fn borrow_raw_str(s: &str) {}

let owned = DatabaseName::new(String::from("mongo"));
borrow_raw_str(owned.as_str());
take_raw_string(owned.take());

有关更多信息,请参阅 docs.rs 上的文档

依赖项

~335–800KB
~19K SLoC