hg-core: add `files_with_nodes` to `Manifest`
Differential Revision: https://phab.mercurial-scm.org/D9050
--- a/rust/hg-core/src/revlog/manifest.rs Tue Sep 15 16:45:27 2020 +0200
+++ b/rust/hg-core/src/revlog/manifest.rs Tue Sep 15 16:46:57 2020 +0200
@@ -57,4 +57,17 @@
HgPath::new(&line[..pos])
})
}
+
+ /// Return an iterator over the files of the entry.
+ pub fn files_with_nodes(&self) -> impl Iterator<Item = (&HgPath, &[u8])> {
+ self.lines().filter(|line| !line.is_empty()).map(|line| {
+ let pos = line
+ .iter()
+ .position(|x| x == &b'\0')
+ .expect("manifest line should contain \\0");
+ let hash_start = pos + 1;
+ let hash_end = hash_start + 40;
+ (HgPath::new(&line[..pos]), &line[hash_start..hash_end])
+ })
+ }
}