1use alloc::vec::Vec;
4
5pub struct Test<S> {
7 pub filter: S,
9 pub input: S,
11 pub output: Vec<S>,
13}
14
15pub struct Parser<I>(I);
17
18impl<I> Parser<I> {
19 pub fn new(lines: I) -> Self {
21 Self(lines)
22 }
23}
24
25impl<S: core::ops::Deref<Target = str>, I: Iterator<Item = S>> Iterator for Parser<I> {
26 type Item = Test<S>;
27
28 fn next(&mut self) -> Option<Self::Item> {
29 let lines = &mut self.0;
30 Some(Test {
31 filter: lines.find(|l| !(l.is_empty() || l.starts_with('#')))?,
32 input: lines.next()?,
33 output: lines.take_while(|l| !l.is_empty()).collect(),
34 })
35 }
36}