[]Derive Macro track::preclude::SerdeDiff

#[derive(SerdeDiff)]
{
    // Attributes available to this derive:
    #[serde_diff]
}

Examples

Minimal example of implementing diff support for a struct

use serde_diff::SerdeDiff;
use serde::{Serialize, Deserialize};
#[derive(SerdeDiff, Serialize, Deserialize)]
struct MySimpleStruct {
   val: u32,
}

Example of an opaque (non-recursive diff) implementation of SerdeDiff using #[serde_diff(opaque)] on the struct. Field types are not required to implement SerdeDiff in this case, only Serialize + Deserialize + PartialEq.

use serde_diff::SerdeDiff;
use serde::{Serialize, Deserialize};
#[derive(SerdeDiff, Serialize, Deserialize, PartialEq)]
#[serde_diff(opaque)]
struct OpaqueTest(i32);

Example of a struct with an opaque field using #[serde_diff(opaque)] on a field.

use serde_diff::SerdeDiff;
use serde::{Serialize, Deserialize};
#[derive(SerdeDiff, Clone, Serialize, Deserialize, Debug)]
struct MyInnerStruct {
    #[serde_diff(opaque)]
    heap: std::collections::HashSet<i32>,
}