Simplify AppendOnlyVec iterators

This commit is contained in:
Josh Stone
2026-02-25 08:09:43 -08:00
parent 859951e3c7
commit 696a7a1f04
@@ -46,20 +46,17 @@ pub fn get(&self, i: usize) -> Option<T> {
}
pub fn iter_enumerated(&self) -> impl Iterator<Item = (usize, T)> {
(0..)
.map(|i| (i, self.get(i)))
.take_while(|(_, o)| o.is_some())
.filter_map(|(i, o)| Some((i, o?)))
(0..).map_while(|i| Some((i, self.get(i)?)))
}
pub fn iter(&self) -> impl Iterator<Item = T> {
(0..).map(|i| self.get(i)).take_while(|o| o.is_some()).flatten()
(0..).map_while(|i| self.get(i))
}
}
impl<T: Copy + PartialEq> AppendOnlyVec<T> {
pub fn contains(&self, val: T) -> bool {
self.iter_enumerated().any(|(_, v)| v == val)
self.iter().any(|v| v == val)
}
}