9 个版本
0.2.0 | 2019年7月7日 |
---|---|
0.1.7 | 2019年5月22日 |
0.1.6 | 2019年4月21日 |
1106 在 过程宏 中
8KB
102 行
derive_less
用于模板化项声明的宏。
示例
假设你需要以下代码
#[derive(Debug)]
pub struct Foo(
#[apple]
pub i32,
#[apple]
pub i32,
);
#[derive(Clone)]
pub enum Bar {
#[orange]
X(i32),
#[orange]
Y(i32),
}
#[derive(Debug)]
pub struct Baz(
#[apple]
pub i32,
#[apple]
pub f32,
#[apple]
pub i32,
);
#[derive(Clone)]
pub enum Qux {
#[orange]
A(i32),
#[orange]
B(i32),
#[orange]
C(i32),
}
而不是为每个项声明重复输入 #[orange]
、#[apple]
和 pub
,你可以简单地写
use derive_less::derive_less;
derive_less! {
#[derive(Debug)] pub struct __ { #[apple] pub __:__ }
#[derive(Clone)] pub enum __ { #[orange] __ }
struct Foo(i32, i32);
enum Bar {
X(i32),
Y(i32),
}
struct Baz(i32, f32, i32);
enum Qux {
A(i32),
B(i32),
C(i32),
}
}
你还可以混合使用仅适用于某些项/变体/字段的derives,例如
use derive_less::derive_less;
derive_less! {
#[derive(Debug)] pub struct __ { #[apple] pub __:__ }
#[derive(Clone)] pub enum __ { #[orange] __ }
struct Foo(i32, i32);
enum Bar {
X(#[peanut] i32),
Y(i32),
}
#[derive(PartialEq, PartialOrd)]
struct Baz(i32, f32, i32);
enum Qux {
A(i32),
B(i32),
C(i32),
}
}
依赖项
~2MB
~46K SLoC