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::PartialOrdOrd/NoOrd:启用或禁用继承std::cmp::OrdDisplay/NoDisplay:启用或禁用继承std::fmt::Display并添加一个to_string方法Debug/NoDebug:启用或禁用继承std::fmt::DebugAsBytes/NoAsBytes:启用或禁用继承std::convert::AsRef<[u8]>并添加一个as_bytes方法Borrow/NoBorrow:启用或禁用继承std::borrow::BorrowAsRef/NoAsRef:启用或禁用继承std::convert::AsRef
默认类型
对于未知类型,所有功能默认禁用,但某些类型如 String 具有智能默认值。
#[id(Clone, Hash, PartialEq, Eq, PartialOrd, Ord, Display, ToString, Debug, AsBytes, ...)]
pub struct Id(String);
依赖项
~305–790KB
~18K SLoC