1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
use crate::*; #[derive(Debug, Clone)] pub struct With<A, B>(A, B) where A: Scanner, B: Scanner<Input = A::Input>; impl<A, B> With<A, B> where A: Scanner, B: Scanner<Input = A::Input>, { pub(crate) fn new(a: A, b: B) -> Self { Self(a, b) } } impl<A, B> Scanner for With<A, B> where A: Scanner, B: Scanner<Input = A::Input>, { type Input = A::Input; type Output = B::Output; fn scan(&self, stream: &mut Stream<Self::Input>) -> Res<Self> { self.0.scan(stream)?; self.1.scan(stream) } }