#merge #struct #amount #required #down #left #debugging

merge-rs

一个小型库,可以减少将两个任意结构体合并为新的结构体所需的代码量

4 个版本 (重大变更)

0.4.0 2023年11月20日
0.3.0 2023年4月21日
0.2.0 2022年10月27日
0.1.2 2022年2月16日

#7 in #left

MIT 许可证

9KB
127

merge-rs

一个小型库,可以减少将两个任意结构体合并为新的结构体所需的代码量。

文档

[dependencies]
merge-rs = "0.4"

示例

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:?}")
}

贡献者

依赖

~2MB
~43K SLoC