[][src]Trait rdms::Diff

pub trait Diff: Sized {
    type D: Clone + From<Self> + Into<Self> + Footprint;
    fn diff(&self, old: &Self) -> Self::D;
fn merge(&self, delta: &Self::D) -> Self; }

Trait for diffable values.

All values indexed in Rdms must support this trait, since Rdms can manage successive modifications to the same entry.

If,

P = old value; C = new value; D = difference between P and C

Then,

D = C - P (diff operation)
P = C - D (merge operation, to get old value)

Associated Types

type D: Clone + From<Self> + Into<Self> + Footprint

Loading content...

Required methods

fn diff(&self, old: &Self) -> Self::D

Return the delta between two consecutive versions of a value. Delta = New - Old.

fn merge(&self, delta: &Self::D) -> Self

Merge delta with newer version to return older version of the value. Old = New - Delta.

Loading content...

Implementations on Foreign Types

impl Diff for Vec<u8>[src]

type D = Vec<u8>

fn diff(&self, old: &Self) -> Self::D[src]

D = C - P

fn merge(&self, delta: &Self::D) -> Self[src]

P = C - D

impl Diff for i32[src]

type D = i32

fn diff(&self, old: &Self) -> Self::D[src]

D = C - P

fn merge(&self, delta: &Self::D) -> Self[src]

P = C - D

impl Diff for i64[src]

type D = i64

fn diff(&self, old: &Self) -> Self::D[src]

D = C - P

fn merge(&self, delta: &Self::D) -> Self[src]

P = C - D

Loading content...

Implementors

impl Diff for Empty[src]

type D = Empty

fn diff(&self, _a: &Self) -> Self::D[src]

D = C - P

fn merge(&self, _a: &Self::D) -> Self[src]

P = C - D

Loading content...