use git_hash::ObjectId; use git_object::immutable; use std::collections::VecDeque; /// The state required to visit [Changes] to be instantiated with `State::default()`. #[derive(Default, Clone)] pub struct State { buf1: Vec, buf2: Vec, trees: VecDeque>, } type TreeInfoPair = (Option>, Option>); #[derive(Clone)] pub(crate) struct TreeInfo { pub tree_id: ObjectId, pub parent_path_id: PathId, } impl State

{ fn clear(&mut self) { self.trees.clear(); self.buf1.clear(); self.buf2.clear(); } } /// An iterator over changes of a tree, instantiated using `Changes::from(…)`. pub struct Changes<'a>(Option>); impl<'a, T> From for Changes<'a> where T: Into>>, { fn from(v: T) -> Self { Changes(v.into()) } } mod changes; /// pub mod visit; pub use visit::Visit; /// Houses a [`visit::Visit`] to keep track of all seen changes. Useful for debugging primarily. pub mod recorder; pub use recorder::Recorder;