use crate::Fold;
#[derive(Debug, Clone, Eq, PartialEq, Hash)]
pub enum Edit {
Replace(Box<[Edit]>),
Insert,
Remove,
}
impl Fold for Edit {
#[inline]
fn fold<R, Fn: FnMut(R, &Self) -> R>(&self, init: R, f: &mut Fn) -> R {
if let Edit::Replace(c) = self {
c.fold(f(init, self), f)
} else {
f(init, self)
}
}
}