1use std::ops::ControlFlow;
5
6use objects::{
7 error::HeddleError,
8 object::{ContentHash, FileChange, FileChangeSet, diff_trees, diff_trees_visit},
9};
10
11use super::{Repository, Result};
12
13impl Repository {
14 pub fn diff_trees(&self, from: &ContentHash, to: &ContentHash) -> Result<FileChangeSet> {
16 diff_trees(&self.store, from, to)
17 .map_err(|error| HeddleError::InvalidObject(format!("tree diff failed: {error}")))
18 }
19
20 pub fn diff_trees_visit<V, B>(
29 &self,
30 from: &ContentHash,
31 to: &ContentHash,
32 visitor: V,
33 ) -> Result<ControlFlow<B>>
34 where
35 V: FnMut(FileChange) -> ControlFlow<B>,
36 {
37 diff_trees_visit(&self.store, from, to, visitor)
38 .map_err(|error| HeddleError::InvalidObject(format!("tree diff failed: {error}")))
39 }
40}