in gazebo/src/ext/iter.rs [279:302]
fn try_eq_by<O, F, E>(mut self, other: O, mut eq: F) -> Result<bool, E>
where
Self: Sized,
O: IntoIterator,
F: FnMut(Self::Item, O::Item) -> Result<bool, E>,
{
let mut other = other.into_iter();
loop {
let x = match self.next() {
None => return Ok(other.next().is_none()),
Some(val) => val,
};
let y = match other.next() {
None => return Ok(false),
Some(val) => val,
};
if !eq(x, y)? {
return Ok(false);
}
}
}