diff --git a/src/zipper.rs b/src/zipper.rs index cb43c45..78f4e89 100644 --- a/src/zipper.rs +++ b/src/zipper.rs @@ -30,7 +30,13 @@ impl LabelledZId { } impl<'a> Expr<'a> { - pub fn zip(&self, zipper: &[ZNode]) -> Self { + pub fn zip(&self, zipper: &'a[ZNode]) -> Self { + self.zip_iter(zipper.iter()) + } + + #[inline] + pub fn zip_iter(&self, zipper: T) -> Self + where T: Iterator { let mut e = *self; for znode in zipper { e = match znode {