Struct Patch

Crates.io MIT licensed Docs

A lib help you patch Rust instance, and easy to partial update configures.

Introduction

A derive macro struct_patch::Patch helps you generate patch structure {Struct}Patch with all fields in optional, such that patch structure is good for partial update by apply method of struct_patch::traits::Patch traits.

Example

```rust use struct_patch::Patch; use serde::{Deserialize, Serialize};

#[derive(Default, Patch)]
#[patch_derive(Debug, Default, Deserialize, Serialize)]
struct Item {
    field_bool: bool,
    field_int: usize,
    field_string: String,
}

fn patch_json() {
    use struct_patch::traits::Patch;

    let mut item = Item::default();

    let data = r#"{
        "field_int": 7
    }"#;

    let patch = serde_json::from_str(data).unwrap();

    assert_eq!(
      format!("{patch:?}"), 
      "ItemPatch { field_bool: None, field_int: Some(7), field_string: None }"
    );

    item.apply(patch);

    assert_eq!(item.field_bool, false);
    assert_eq!(item.field_int, 7);
    assert_eq!(item.field_string, "");
}

```