#newtype #class #value #macro-derive

rvstruct

用于 Rust 中值类的一个辅助宏实现

6 个版本

0.3.2 2022 年 12 月 11 日
0.3.1 2022 年 12 月 11 日
0.3.0 2021 年 11 月 4 日
0.2.3 2020 年 6 月 19 日

Rust 模式 中排名第 540

Download history 5722/week @ 2024-03-14 6698/week @ 2024-03-21 5619/week @ 2024-03-28 5715/week @ 2024-04-04 7112/week @ 2024-04-11 7888/week @ 2024-04-18 6211/week @ 2024-04-25 6041/week @ 2024-05-02 6008/week @ 2024-05-09 6544/week @ 2024-05-16 6322/week @ 2024-05-23 5864/week @ 2024-05-30 7501/week @ 2024-06-06 8475/week @ 2024-06-13 8690/week @ 2024-06-20 7682/week @ 2024-06-27

每月下载量 33,404
19 包中使用 (直接使用 7 个)

Apache-2.0 协议

6KB

Cargo

Rust 的值结构派生宏,用于支持新类型模式

动机

一个非常简单的派生宏,用于支持强类型系统和 新类型模式。新类型是一种零成本抽象:它们为现有类型引入了一个新的、独特的名称,在两种类型之间转换时没有运行时开销。这与 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