# derive_less
A macro for templating item declarations.
# Example
Suppose you needed the following code:
```rust
#[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),
}
```
Instead of typing out `#[orange]`, `#[apple]`, and `pub`, repeatedly for each item declaration, you could simply write:
```rust
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),
}
}
```
You can also mix in derives that only apply to certain items/variants/fields, e.g:
```rust
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),
}
}
```