Skip to main content

Diffable

Trait Diffable 

Source
pub trait Diffable<'s, 'e, Other: ?Sized> {
    type Delta;
    type DeltaOwned;

    // Required method
    fn create_delta_towards(
        &'s self,
        end_state: &'e Other,
    ) -> CreatedDelta<Self::Delta>;
}
Expand description

Allows a type to be diffed with another type.

Required Associated Types§

Source

type Delta

This will typically hold references to data from the structs that are being diffed.

Source

type DeltaOwned

This will typically be an owned version of Self::Delta.

Required Methods§

Source

fn create_delta_towards( &'s self, end_state: &'e Other, ) -> CreatedDelta<Self::Delta>

Diff self with some target end state, generating a patch that would convert self -> end_state.

Implementations on Foreign Types§

Source§

impl<'s, 'e> Diffable<'s, 'e, bool> for bool

Source§

impl<'s, 'e> Diffable<'s, 'e, f32> for f32

Source§

impl<'s, 'e> Diffable<'s, 'e, f64> for f64

Source§

impl<'s, 'e> Diffable<'s, 'e, i8> for i8

Source§

impl<'s, 'e> Diffable<'s, 'e, i16> for i16

Source§

impl<'s, 'e> Diffable<'s, 'e, i32> for i32

Source§

impl<'s, 'e> Diffable<'s, 'e, i64> for i64

Source§

impl<'s, 'e> Diffable<'s, 'e, i128> for i128

Source§

impl<'s, 'e> Diffable<'s, 'e, str> for str

Source§

type Delta = Vec<SequenceModificationDelta<'e, u8>>

Source§

type DeltaOwned = Vec<SequenceModificationDeltaOwned<u8>>

Source§

fn create_delta_towards( &'s self, end_state: &'e str, ) -> CreatedDelta<Self::Delta>

Source§

impl<'s, 'e> Diffable<'s, 'e, u8> for u8

Source§

impl<'s, 'e> Diffable<'s, 'e, u16> for u16

Source§

impl<'s, 'e> Diffable<'s, 'e, u32> for u32

Source§

impl<'s, 'e> Diffable<'s, 'e, u64> for u64

Source§

impl<'s, 'e> Diffable<'s, 'e, u128> for u128

Source§

impl<'s, 'e> Diffable<'s, 'e, ()> for ()

Source§

impl<'s, 'e> Diffable<'s, 'e, String> for String

Source§

type Delta = Vec<SequenceModificationDelta<'e, u8>>

Source§

type DeltaOwned = Vec<SequenceModificationDeltaOwned<u8>>

Source§

fn create_delta_towards( &self, end_state: &'e String, ) -> CreatedDelta<Self::Delta>

Source§

impl<'s, 'e, 'a, T> Diffable<'s, 'e, Cow<'a, T>> for Cow<'a, T>
where T: ToOwned + ?Sized + Diffable<'s, 'e, T>,

Source§

type Delta = <T as Diffable<'s, 'e, T>>::Delta

Source§

type DeltaOwned = <T as Diffable<'s, 'e, T>>::DeltaOwned

Source§

fn create_delta_towards( &'s self, end_state: &'e Cow<'a, T>, ) -> CreatedDelta<Self::Delta>

Source§

impl<'s, 'e, A: Diffable<'s, 'e, A>, B: Diffable<'s, 'e, B>> Diffable<'s, 'e, (A, B)> for (A, B)

Source§

type Delta = Delta2<<A as Diffable<'s, 'e, A>>::Delta, <B as Diffable<'s, 'e, B>>::Delta>

Source§

type DeltaOwned = DeltaOwned2<<A as Diffable<'s, 'e, A>>::DeltaOwned, <B as Diffable<'s, 'e, B>>::DeltaOwned>

Source§

fn create_delta_towards( &'s self, end_state: &'e (A, B), ) -> CreatedDelta<Self::Delta>

Source§

impl<'s, 'e, K> Diffable<'s, 'e, BTreeSet<K>> for BTreeSet<K>
where K: 's + 'e + Eq + Hash + Ord,

Source§

type Delta = SetDelta<'s, 'e, K>

Source§

type DeltaOwned = SetDeltaOwned<K>

Source§

fn create_delta_towards( &'s self, end_state: &'e BTreeSet<K>, ) -> CreatedDelta<Self::Delta>

Source§

impl<'s, 'e, K> Diffable<'s, 'e, HashSet<K>> for HashSet<K>
where K: 's + 'e + Eq + Hash,

Source§

type Delta = SetDelta<'s, 'e, K>

Source§

type DeltaOwned = SetDeltaOwned<K>

Source§

fn create_delta_towards( &'s self, end_state: &'e HashSet<K>, ) -> CreatedDelta<Self::Delta>

Source§

impl<'s, 'e, K, V> Diffable<'s, 'e, BTreeMap<K, V>> for BTreeMap<K, V>
where K: 's + 'e + Eq + Hash + Ord, V: 'e + Diffable<'s, 'e, V>, <V as Diffable<'s, 'e, V>>::Delta: Serialize, <V as Diffable<'s, 'e, V>>::DeltaOwned: DeserializeOwned,

Source§

type Delta = MapDelta<'s, 'e, K, V>

Source§

type DeltaOwned = MapDeltaOwned<'s, 'e, K, V>

Source§

fn create_delta_towards( &'s self, end_state: &'e BTreeMap<K, V>, ) -> CreatedDelta<Self::Delta>

Source§

impl<'s, 'e, K, V> Diffable<'s, 'e, HashMap<K, V>> for HashMap<K, V>
where K: 's + 'e + Eq + Hash, V: 'e + Diffable<'s, 'e, V>, <V as Diffable<'s, 'e, V>>::Delta: Serialize, <V as Diffable<'s, 'e, V>>::DeltaOwned: DeserializeOwned,

Source§

type Delta = MapDelta<'s, 'e, K, V>

Source§

type DeltaOwned = MapDeltaOwned<'s, 'e, K, V>

Source§

fn create_delta_towards( &'s self, end_state: &'e HashMap<K, V>, ) -> CreatedDelta<Self::Delta>

Source§

impl<'s, 'e, T> Diffable<'s, 'e, Option<T>> for Option<T>
where T: 'e + Diffable<'s, 'e, T>, <T as Diffable<'s, 'e, T>>::Delta: Serialize, <T as Diffable<'s, 'e, T>>::DeltaOwned: DeserializeOwned,

Source§

type Delta = OptionDelta<'s, 'e, T>

Source§

type DeltaOwned = OptionDeltaOwned<'s, 'e, T>

Source§

fn create_delta_towards( &'s self, end_state: &'e Option<T>, ) -> CreatedDelta<Self::Delta>

Source§

impl<'s, 'e, T> Diffable<'s, 'e, [T]> for &[T]
where T: PartialEq + 'e + Diffable<'s, 'e, T>, &'e T: Serialize,

Source§

type Delta = Vec<SequenceModificationDelta<'e, T>>

Source§

type DeltaOwned = Vec<SequenceModificationDeltaOwned<T>>

Source§

fn create_delta_towards(&self, end_state: &'e [T]) -> CreatedDelta<Self::Delta>

Source§

impl<'s, 'e, T> Diffable<'s, 'e, Vec<T>> for Vec<T>
where T: PartialEq + 'e + Diffable<'s, 'e, T>, &'e T: Serialize,

Source§

type Delta = Vec<SequenceModificationDelta<'e, T>>

Source§

type DeltaOwned = Vec<SequenceModificationDeltaOwned<T>>

Source§

fn create_delta_towards(&self, end_state: &'e Self) -> CreatedDelta<Self::Delta>

Implementors§