pub trait Merge<T> { type Output; fn merge(self, other: T) -> Self::Output; }
Helper trait that allow for merging of tuples
merge LHS with RHS returning a new tuple that contains the elements of both tuples ordering is preserved such that LHS elements come before RHS elements.