pub trait Diff:
Clone
+ Debug
+ PartialEq {
type Type: Sized + Clone + Debug + PartialEq + for<'de> Deserialize<'de> + Serialize;
// Required methods
fn diff(&self, other: &Self) -> Result<Self::Type>;
fn merge(&self, diff: Self::Type) -> Result<Self>;
fn from_diff(diff: Self::Type) -> Result<Self>;
fn into_diff(self) -> Result<Self::Type>;
}Expand description
The primary Diff Trait type.
Required Associated TypesΒ§
Required MethodsΒ§
Sourcefn diff(&self, other: &Self) -> Result<Self::Type>
πDeprecated since 0.5.0: diff chain features are slated for removal
fn diff(&self, other: &Self) -> Result<Self::Type>
Finds the difference between two types; self and other and returns Self::Type
Sourcefn merge(&self, diff: Self::Type) -> Result<Self>
πDeprecated since 0.5.0: diff chain features are slated for removal
fn merge(&self, diff: Self::Type) -> Result<Self>
Merges a Self::Type with Self
Dyn CompatibilityΒ§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementations on Foreign TypesΒ§
SourceΒ§impl Diff for Value
The Diff implementation for serde_json::Value.
impl Diff for Value
The Diff implementation for serde_json::Value.
SourceΒ§type Type = DiffValue
πDeprecated since 0.5.0: diff chain features are slated for removal
type Type = DiffValue
The Diff Type for serde_json::Value.
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
πDeprecated since 0.5.0: diff chain features are slated for removal
fn diff(&self, other: &Self) -> Result<Self::Type>
Compares two serde_json::Value types; self, diff and outputs a DiffValue type.
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
πDeprecated since 0.5.0: diff chain features are slated for removal
fn merge(&self, diff: Self::Type) -> Result<Self>
Merges a DiffValue; diff with self; a serde_json::Value to create a new serde_json::Value.
SourceΒ§impl Diff for bool
impl Diff for bool
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for char
impl Diff for char
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for f32
impl Diff for f32
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for f64
impl Diff for f64
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for i8
impl Diff for i8
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for i16
impl Diff for i16
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for i32
impl Diff for i32
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for i64
impl Diff for i64
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for i128
impl Diff for i128
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for isize
impl Diff for isize
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for u8
impl Diff for u8
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for u16
impl Diff for u16
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for u32
impl Diff for u32
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for u64
impl Diff for u64
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for u128
impl Diff for u128
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for ()
impl Diff for ()
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for usize
impl Diff for usize
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for BTreeMap<String, Value>
impl Diff for BTreeMap<String, Value>
SourceΒ§type Type = DiffHashMap<String, Value>
type Type = DiffHashMap<String, Value>
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
fn diff(&self, other: &Self) -> Result<Self::Type>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
fn merge(&self, diff: Self::Type) -> Result<Self>
SourceΒ§impl Diff for String
Diff trait implementation for String.
impl Diff for String
Diff trait implementation for String.
SourceΒ§type Type = DiffString
πDeprecated since 0.5.0: diff chain features are slated for removal
type Type = DiffString
Diff type for String
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
πDeprecated since 0.5.0: diff chain features are slated for removal
fn diff(&self, other: &Self) -> Result<Self::Type>
compares two String types; self, other and returns a DiffString type.
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
πDeprecated since 0.5.0: diff chain features are slated for removal
fn merge(&self, diff: Self::Type) -> Result<Self>
Merges a DiffString; diff with a String; self.
SourceΒ§impl<K, V> Diff for HashMap<K, V>
Diff Implementation on a HashMap<K, V>
impl<K, V> Diff for HashMap<K, V>
Diff Implementation on a HashMap<K, V>
SourceΒ§type Type = DiffHashMap<K, V>
πDeprecated since 0.5.0: diff chain features are slated for removal
type Type = DiffHashMap<K, V>
the Diff type of the HashMap<K, V>
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
πDeprecated since 0.5.0: diff chain features are slated for removal
fn diff(&self, other: &Self) -> Result<Self::Type>
Diffs two HashMaps; self and other and creates a DiffHashMap<K, V>
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
πDeprecated since 0.5.0: diff chain features are slated for removal
fn merge(&self, diff: Self::Type) -> Result<Self>
Merges the changes in a DiffHashMap<K, V>, diff with a HashMap<K, V>, self.
SourceΒ§impl<T> Diff for Option<T>
Diff Implementation for Option<T>
impl<T> Diff for Option<T>
Diff Implementation for Option<T>
SourceΒ§type Type = DiffOption<T>
πDeprecated since 0.5.0: diff chain features are slated for removal
type Type = DiffOption<T>
The Corresponding Diff type for Option<T>
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
πDeprecated since 0.5.0: diff chain features are slated for removal
fn diff(&self, other: &Self) -> Result<Self::Type>
Compares two Option<T> types; self and other and finds the Difference between them, returning a
DiffOption<T> type.
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
πDeprecated since 0.5.0: diff chain features are slated for removal
fn merge(&self, diff: Self::Type) -> Result<Self>
Merges a DiffOption<T>; diff type with an Option<T> type; self.
SourceΒ§impl<T> Diff for Vec<T>
Diff trait implementation for Vec<T>
impl<T> Diff for Vec<T>
Diff trait implementation for Vec<T>
SourceΒ§type Type = DiffVec<T>
πDeprecated since 0.5.0: diff chain features are slated for removal
type Type = DiffVec<T>
Corresponding Diff Type for Vec<T>
SourceΒ§fn diff(&self, other: &Self) -> Result<Self::Type>
πDeprecated since 0.5.0: diff chain features are slated for removal
fn diff(&self, other: &Self) -> Result<Self::Type>
Compares two Vec<T> types; self, other and returns a DiffVec<T> type.
SourceΒ§fn merge(&self, diff: Self::Type) -> Result<Self>
πDeprecated since 0.5.0: diff chain features are slated for removal
fn merge(&self, diff: Self::Type) -> Result<Self>
Merges a DiffVec<T>; diff with self; a Vec<T> to create a new Vec<T>.