diff --git a/rust/automerge/src/automerge.rs b/rust/automerge/src/automerge.rs index 0dd82253..bd1930e8 100644 --- a/rust/automerge/src/automerge.rs +++ b/rust/automerge/src/automerge.rs @@ -792,6 +792,11 @@ impl Automerge { bytes } + /// Mark the document as saved + pub fn mark_saved(&mut self) { + self.saved = self.get_heads(); + } + /// Save the changes since the last call to [Self::save`] /// /// The output of this will not be a compressed document format, but a series of individual diff --git a/rust/automerge/src/change.rs b/rust/automerge/src/change.rs index be467a84..3595e353 100644 --- a/rust/automerge/src/change.rs +++ b/rust/automerge/src/change.rs @@ -112,6 +112,17 @@ impl Change { self.stored.iter_ops() } + pub fn difference(&self) -> (u32, u32) { + self.iter_ops() + .map(|op| match op.action { + 1 => (1, 0), + 3 => (0, 1), + _ => (0, 0), + }) + .reduce(|acc, x| (acc.0 + x.0, acc.1 + x.1)) + .unwrap_or_default() + } + pub fn extra_bytes(&self) -> &[u8] { self.stored.extra_bytes() }