1 个不稳定版本
0.1.0 | 2024年1月6日 |
---|
#78 在 #rename
125 每月下载量
30KB
763 代码行
enum-impl
enum-impl
是一个Rust过程宏,通过为每个变体生成常见的方法和特质来简化枚举的使用。这有助于减少样板代码,并提高在Rust项目中使用枚举的舒适度。
特性
[pub] as_ref [= "rename"]
生成一个方法,返回枚举变体的关联数据的不可变引用。[pub] as_ref_mut [= "rename"]
生成一个方法,返回枚举变体的关联数据的可变引用。[pub] from [= "rename"]
生成一个方法,从关联数据创建枚举变体的实例。impl from
为枚举实现From
特质,从关联数据创建枚举变体的实例。[pub] into [= "rename"]
生成一个方法,将枚举转换为关联数据变体。[pub] is [= "rename"]
生成一个方法,返回一个布尔值,指示枚举实例是否匹配指定的变体。
用法
将 enum-impl
添加到您的 Cargo.toml
[dependencies]
enum-impl = "0.1"
在您的Rust代码中
use enum_impl::EnumImpl;
#[derive(EnumImpl)]
enum YourEnum {
#[enum_impl(pub is)]
Variant1,
#[enum_impl(pub as_ref, 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);
}
更多示例可以在 示例 中找到。
依赖关系
~0.8–1.3MB
~25K SLoC