2个版本
0.1.1 | 2021年8月15日 |
---|---|
0.1.0 | 2021年8月9日 |
#633 在 过程宏
32KB
890 行
强类型ID类型宏
一个宏,用于简化Rust代码库中强类型ID类型的用法,而不是使用普通的 String
、u64
或 Guid
。
use stidgen::{Id, id};
#[id]
pub struct UserId(String);
#[id(NoDefaults, Format, Debug)]
pub struct UserId(u64);
虽然 derive
宏已经可以用来实现这个宏的大部分功能,但它有以下优点:
- 对于已知类型来说,使用起来更简单,只需在你的结构体中添加
#[id]
即可。 - 默认值提供了大量的泛型实现,这些实现可能在使用手动方式时被忽略。
- 提供了一些没有对应 derive 宏的功能(例如
AsBytes
、AsRef
、Borrow
)。 - 所有平凡函数都被标记为内联。
设置
Defaults
/NoDefaults
:启用或禁用已知类型的默认值。Clone
/NoClone
:启用或禁用派生std::clone::Clone
。Hash
/NoHash
:启用或禁用派生std::hash::Hash
。PartialEq
/NoPartialEq
:启用或禁用派生std::cmp::PartialEq
。Eq
/NoEq
:启用或禁用派生std::cmp::Eq
。PartialOrd
/NoPartialOrd
:启用或禁用继承std::cmp::PartialOrd
Ord
/NoOrd
:启用或禁用继承std::cmp::Ord
Display
/NoDisplay
:启用或禁用继承std::fmt::Display
并添加一个to_string
方法Debug
/NoDebug
:启用或禁用继承std::fmt::Debug
AsBytes
/NoAsBytes
:启用或禁用继承std::convert::AsRef<[u8]>
并添加一个as_bytes
方法Borrow
/NoBorrow
:启用或禁用继承std::borrow::Borrow
AsRef
/NoAsRef
:启用或禁用继承std::convert::AsRef
默认类型
对于未知类型,所有功能默认禁用,但某些类型如 String
具有智能默认值。
#[id(Clone, Hash, PartialEq, Eq, PartialOrd, Ord, Display, ToString, Debug, AsBytes, ...)]
pub struct Id(String);
依赖项
~305–790KB
~18K SLoC