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 编码
7KB
nova
方便地创建 newtype。
以下宏生成的所有类型都实现了 Debug
、Clone
、Eq
、PartialEq
、Ord
、PartialOrd
和 Hash
。对于 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 的Serialize
和Deserialize
。 - sqlx: 启用支持
sqlx
属性以派生 newtype 的sqlx::Type
。 - async_graphql: 启用支持
async_graphql
属性以实现 newtype 的Scalar
。
生成属性
- copy: 在 newtype 上派生
Copy
。 - opaque: 禁用生成
Deref
和into_inner
函数以创建不可见类型。 - borrow = "<type>": 如果需要,设置用于
Deref
实现的类型。 - new: 创建默认构造函数
new
和From
实现。 - derive(...): 用提供的列表替换 newtype 的默认派生。与正常的
#[derive(...)]
属性相同的语法。
许可证
此项目许可方式为
- Apache License, Version 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- 麻省理工学院许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
根据您的要求。
依赖项
约2MB
约43K SLoC