Trait treediff::Delegate

source ·
pub trait Delegate<'a, K, V> {
    // Provided methods
    fn push(&mut self, _k: &K) { ... }
    fn pop(&mut self) { ... }
    fn removed<'b>(&mut self, _k: &'b K, _v: &'a V) { ... }
    fn added<'b>(&mut self, _k: &'b K, _v: &'a V) { ... }
    fn unchanged(&mut self, _v: &'a V) { ... }
    fn modified(&mut self, _old: &'a V, _new: &'a V) { ... }
}
Expand description

The delegate receiving callbacks by the diff algorithm, which compares an old to a new value.

§Type Parameters

  • K is the Key’s type
  • V is the Value’s type

Methods will be called if…

Provided Methods§

source

fn push(&mut self, _k: &K)

… we recurse into the Value at the given Key.

Delegates should memoize the current Key path to be able to compute the full Key path when needed.

source

fn pop(&mut self)

… we have processed all items and leave the object previously pushed.

source

fn removed<'b>(&mut self, _k: &'b K, _v: &'a V)

… the Value v at the given Key k should be removed.

Note that the Key is partial, and should be used in conjunction with the recorded Keys received via push(...)

source

fn added<'b>(&mut self, _k: &'b K, _v: &'a V)

.. the Value v at the given Key k should be added.

Note that the Key is partial, and should be used in conjunction with the recorded Keys received via push(...)

source

fn unchanged(&mut self, _v: &'a V)

The Value v was not changed.

source

fn modified(&mut self, _old: &'a V, _new: &'a V)

… the old Value was modified, and is now the new Value.

Implementors§

source§

impl<'a, K, V> Delegate<'a, K, V> for Recorder<'a, K, V>
where K: Clone,

source§

impl<'a, K, V, F, BF> Delegate<'a, K, V> for Merger<K, V, BF, F>
where V: Mutable<Key = K, Item = V> + Clone + 'a, K: Clone + Display, F: MutableFilter, BF: BorrowMut<F>,