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>
.