1 个不稳定版本
0.1.0 | 2024年6月23日 |
---|
#1433 在 过程宏
119 每月下载
用于 meplang
54KB
1.5K SLoC
quick-impl
quick-impl
是一个Rust过程宏,通过为每个变体/字段生成常用方法和特性,简化了枚举和结构体的使用。这有助于减少样板代码,并提高在Rust项目中使用枚举和结构体的用户体验。
功能
枚举方法
as_ref
- 返回枚举变体的关联数据的不可变引用。as_ref_mut
- 返回枚举变体的关联数据的可变引用。from
- 从关联数据创建枚举变体的实例。into
- 将枚举转换为关联数据变体。is
- 检查枚举变体是否匹配指定的变体。
枚举特性
结构体方法
get
- 字段的获取器。返回字段的引用。get_clone
- 字段的获取器。返回字段的克隆。get_mut
- 字段的可变获取器。into
- 将结构体转换为字段。set
- 字段的设置器。with
- 返回字段修改后的结构体。
结构体特性
AsRef
- 实现了AsRef
特性。AsMut
- 实现了AsMut
特性。Deref
- 实现了Deref
特性。DerefMut
- 实现了DerefMut
特性。Into
- 实现了Into
特性。
使用方法
将 quick-impl
添加到您的 Cargo.toml
[dependencies]
quick-impl = "0.1"
在您的 Rust 代码中
use quick_impl::QuickImpl;
#[derive(QuickImpl)]
enum YourEnum {
#[quick_impl(pub const is)]
Variant1,
#[quick_impl(pub as_ref, pub(crate) as_ref_mut, impl From)]
Variant2(i32),
// ... add attributes to other variants as needed
}
fn main() {
let instance = YourEnum::Variant1;
// Use generated methods on enum instances
assert!(instance.is_variant_1());
let variant2_instance = YourEnum::from(42);
assert_eq!(*variant2_instance.as_variant_2().unwrap(), 42);
}
更多示例可以在 examples 中找到。
依赖项
~0.8–1.3MB
~25K SLoC