flux_core/iter/adapters/
skip.rs1use flux_attrs::*;
2
3#[extern_spec(core::iter)]
4#[refined_by(size: int)]
5struct Skip<I>;
6
7#[extern_spec(core::iter)]
14#[assoc(
15 fn size(r: Skip) -> int { r.size }
16 fn step(self: Skip, other: Skip) -> bool { other.size == self.size - 1 }
17)]
18impl<I: Iterator> Iterator for Skip<I> {
19 #[spec(
20 fn(self: &mut Self[@curr_s]) -> Option<_>[!<Self as Iterator>::done(curr_s)]
21 ensures self: Self{next_s: <Self as Iterator>::step(curr_s, next_s)}
22 )]
23 fn next(&mut self) -> Option<I::Item>;
24}