pub trait Piper<T, Args, I, O> { fn pipe(self) -> Pied<T, Args, I, O>; }
Common pipe trait used to create implementations for each tuple