#quick #impl #derive #proc-macro

quick-impl

A Rust过程宏,自动生成枚举和结构体上的常用方法

1 个不稳定版本

0.1.0 2024年6月23日

#1433过程宏

Download history 147/week @ 2024-06-21 4/week @ 2024-06-28 9/week @ 2024-08-02 48/week @ 2024-08-09 60/week @ 2024-08-16

119 每月下载
用于 meplang

MIT/Apache

54KB
1.5K SLoC

quick-impl

quick-impl 是一个Rust过程宏,通过为每个变体/字段生成常用方法和特性,简化了枚举和结构体的使用。这有助于减少样板代码,并提高在Rust项目中使用枚举和结构体的用户体验。

功能

枚举方法

  • as_ref - 返回枚举变体的关联数据的不可变引用。
  • as_ref_mut - 返回枚举变体的关联数据的可变引用。
  • from - 从关联数据创建枚举变体的实例。
  • into - 将枚举转换为关联数据变体。
  • is - 检查枚举变体是否匹配指定的变体。

枚举特性

  • Default - 实现了 Default 特性。
  • From - 实现了 From 特性。

结构体方法

  • 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