11 个版本

0.5.4 2022 年 8 月 12 日
0.5.3 2022 年 1 月 20 日
0.5.2 2021 年 12 月 4 日
0.5.1 2021 年 11 月 25 日
0.1.0 2021 年 6 月 27 日

#943 in 编码

Apache-2.0 OR MIT

7KB

nova

Documentation

方便地创建 newtype。

以下宏生成的所有类型都实现了 DebugCloneEqPartialEqOrdPartialOrdHash。对于 Copy 类型,newtype 还实现了 Copy

用法

[dependencies]
nova = "0.4"

示例

use nova::newtype;

#[newtype(serde, borrow = "str")]
pub type Meow = String;

#[newtype(new, copy)]
pub(crate) type SpecialUuid = uuid::Uuid;

fn example() {
    let meow = Meow("this is a string".to_string());
    let special_uuid = SpecialUuid::from(uuid::Uuid::new_v4());

    // Get inner:
    let inner = special_uuid.into_inner();
}

支持的属性

包兼容性属性

  • serde: 启用支持 serde 属性以派生 newtype 的 SerializeDeserialize
  • sqlx: 启用支持 sqlx 属性以派生 newtype 的 sqlx::Type
  • async_graphql: 启用支持 async_graphql 属性以实现 newtype 的 Scalar

生成属性

  • copy: 在 newtype 上派生 Copy
  • opaque: 禁用生成 Derefinto_inner 函数以创建不可见类型。
  • borrow = "<type>": 如果需要,设置用于 Deref 实现的类型。
  • new: 创建默认构造函数 newFrom 实现。
  • derive(...): 用提供的列表替换 newtype 的默认派生。与正常的 #[derive(...)] 属性相同的语法。

许可证

此项目许可方式为

根据您的要求。

依赖项

约2MB
约43K SLoC