11 个版本
0.3.2 | 2022 年 12 月 11 日 |
---|---|
0.3.1 |
|
0.3.0 | 2021 年 11 月 4 日 |
0.2.3 | 2020 年 6 月 19 日 |
0.1.1 | 2020 年 4 月 30 日 |
59 在 #newtype
34,163 每月下载量
在 20 个 crate 中使用 (通过 rvstruct)
9KB
137 行(不包括注释)
Rust 的值结构 derive 宏,支持 newtype 模式
动机
一个非常简单的 derive 宏,用于支持强类型系统和 newtype 模式。Newtypes 是一种零成本的抽象:它们为现有类型引入了一个新的、独特的名称,在两种类型之间转换时没有运行时开销。这与 Haskell 的 newtype 关键字 类似。
例如
#[derive(ValueStruct)]
struct UserId(String);
let uid : UserId = "my-uid".into();
宏概述
ValueStruct
会为您自动生成
std::convert::From<>
实例,以帮助您创建结构体。ValueStruct::value()
函数实现,以直接访问您的字段而无需使用 .0。
对于不同类型的字段,有不同的行为
- 对于
std::string::String
,它生成From<String>
、From<&String>
、From<&str>
用法
将以下内容添加到您的 Cargo.toml
[dependencies]
rvstruct = "0.3"
// Import it
use rvstruct::ValueStruct;
// And use it on your structs
#[derive(ValueStruct)]
struct UserId(String);
许可证
Apache 软件许可证 (ASL)
作者
Abdulla Abdurakhmanov
依赖项
~1.5MB
~35K SLoC