pub fn pattern<I, FnX, X>(f: FnX) -> impl FnMut(I) -> Res<I, Pattern<X>> + Copywhere I: Span, FnX: FnMut(I) -> Res<I, X> + Copy, X: Clone,