#merge #struct #down #required #amount #cuts #derive

macro merge-rs-derive

A small library that cuts down on the amount of code required to merge two arbitrary structs into a new struct

1 unstable release

0.4.0 Nov 20, 2023

#37 in #down

24 downloads per month
Used in merge-rs

MIT license

7KB
119 lines

merge-rs

A small library that cuts down on the amount of code required to merge two arbitrary structs into a new struct.

Documentation

[dependencies]
merge-rs = "0.4"

Example

fn special_concat(left: &str, right: &String) -> Result<String, Box<Error>> {
    Ok(format!("{left}_{right}"))
}

#[derive(Debug, Merge)]
struct MyType {
    #[merge_field(skip)]
    transient_field: usize,
    #[merge_field(strategy = "special_concat")]
    label: String
}

fn main() {
    let first = MyType { transient_field: 123, label: "first".to_owned() };
    let second = MyType { transient_field: 456, label: "second".to_owned() };
    let merged = first.merge(&second).unwrap();
    println!("{merged:?}")
}

Contributors

Dependencies

~0.7–1.1MB
~26K SLoC