From 667c57a8354c5e6f3d6f7340e512fb29f8be9613 Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Thu, 4 May 2023 12:49:16 -0600 Subject: [PATCH] Avoid a few usize-u8 comparisons. --- incrementalmerkletree/src/frontier.rs | 6 +++--- incrementalmerkletree/src/lib.rs | 9 ++++----- incrementalmerkletree/src/witness.rs | 6 +++--- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/incrementalmerkletree/src/frontier.rs b/incrementalmerkletree/src/frontier.rs index 5cb8c1f..d19e433 100644 --- a/incrementalmerkletree/src/frontier.rs +++ b/incrementalmerkletree/src/frontier.rs @@ -477,9 +477,9 @@ impl CommitmentTree { .iter() .chain(repeat(&None)) .take((depth - 1).into()) - .enumerate() - .fold(leaf_root, |root, (i, p)| { - let level = Level::from(i as u8 + 1); + .zip(0u8..) + .fold(leaf_root, |root, (p, i)| { + let level = Level::from(i + 1); match p { Some(node) => H::combine(level, node, &root), None => H::combine(level, &root, &filler.next(level)), diff --git a/incrementalmerkletree/src/lib.rs b/incrementalmerkletree/src/lib.rs index 42d53de..2732368 100644 --- a/incrementalmerkletree/src/lib.rs +++ b/incrementalmerkletree/src/lib.rs @@ -499,13 +499,12 @@ impl MerklePath { pub fn root(&self, leaf: H) -> H { self.path_elems .iter() - .enumerate() - .fold(leaf, |root, (i, h)| { - let level = Level(i as u8); + .zip(0u8..) + .fold(leaf, |root, (h, i)| { if (self.position.0 >> i) & 0x1 == 0 { - H::combine(level, &root, h) + H::combine(i.into(), &root, h) } else { - H::combine(level, h, &root) + H::combine(i.into(), h, &root) } }) } diff --git a/incrementalmerkletree/src/witness.rs b/incrementalmerkletree/src/witness.rs index 5bbe20d..41d9c38 100644 --- a/incrementalmerkletree/src/witness.rs +++ b/incrementalmerkletree/src/witness.rs @@ -195,17 +195,17 @@ impl IncrementalWitness { return None; } - for (i, p) in self + for (p, i) in self .tree .parents .iter() .chain(repeat(&None)) .take((depth - 1).into()) - .enumerate() + .zip(0u8..) { auth_path.push(match p { Some(node) => node.clone(), - None => filler.next(Level::from((i + 1) as u8)), + None => filler.next(Level::from(i + 1)), }); }