# Mapstruct-Rs
A proc macro that generates new structs with the variations of the fields you want. You use it by annotating
a struct with `#[derive(Mapstruct)]` and then you can use the `mapstruct(...)` macro to generate new structs.
The syntax is similar to the struct definition syntax, but you only specify the fields and generics you want to change.
You use the `+` operator to add a field or generic, the `-` operator to remove a field or generic and the `~` operator
to change the type or name of a field or generic.
## Example
```rust
use mapstruct_rs::Mapstruct;
#[derive(MapStruct)]
#[mapstruct(
#[derive(Debug)]
struct Y<
+'a,
> {
~id -> pub id,
~name: &'a str,
~some: &'a str,
+last_name: &'a str,
-height,
}
)]
struct X {
id: i64,
name: String,
age: i32,
height: f32,
some: String,
}
```
The above code will generate the following struct:
```rust
#[derive(Debug)]
struct Y<'a> {
pub id: i64,
name: &'a str,
age: i32,
some: &'a str,
last_name: &'a str,
}
```