#newtype #string #wrapper

string-newtype

字符串类型的新类型习语助手

2 个版本

0.1.1 2024 年 4 月 22 日
0.1.0 2024 年 4 月 21 日

#1400编码

Download history 168/week @ 2024-04-22 1/week @ 2024-04-29 1/week @ 2024-05-20 5/week @ 2024-07-01

65 每月下载量

Apache-2.0

16KB
364

string-newtype:字符串类型的新类型习语助手

build_status msrv codecov

string-newtype 是一个辅助库,用于在类似于字符串的类型中使用新类型习语,包括新类型字符串切片。

使用方法

定义一个空的枚举作为你类型的标记,并基于它添加别名

// A marker type, can be anything.
enum S {}

// The newtype definitions.
// `StringBuf` acts as a `String`, while `StringRef` acts as a `str`.
type SBuf = StringBuf<S>;
type SRef = StringRef<S>;

// Define functions that only accept the newtype.
fn my_func(owned: SBuf, reference: &SRef) {
    // ...
}

// Only the newtype can be passed to the function.
let s: SBuf = "hello".into();
my_func(s.clone(), &s);

该包还定义了 SmolStrBufSmolStrRef 类型,它们是 smol_str::SmolStr 的新类型。

功能

  • smol_str 启用 smol_str::SmolStr 的新类型。

  • serde 启用序列化和反序列化实现。

开发 string-newtype

有关设置开发环境的说明,请参阅 DEVELOPMENT.md

许可证

本项目采用 Apache 许可证 2.0 版 (LICENSEhttp://www.apache.org/licenses/LICENSE-2.0)。

依赖项

~0.4–1MB
~20K SLoC