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
use crate::*; #[derive(Debug, Clone)] pub struct And<A, B>(A, B) where A: Scanner, B: Scanner<Input = A::Input>; impl<A, B> And<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 And<A, B> where A: Scanner, B: Scanner<Input = A::Input>, { type Input = A::Input; type Output = (A::Output, B::Output); fn scan(&self, stream: &mut Stream<Self::Input>) -> Res<Self> { Ok((self.0.scan(stream)?, self.1.scan(stream)?)) } }