tuple-traits

Additional traits to enable some cursed ergonomic types.

crates.io docs.rs checks
# Traits ## [`Append`](https://docs.rs/tuple-traits/latest/tuple-traits/trait.Append.html) Append a type to a tuple. ```rust static_assertions::assert_type_eq_all!( <(usize, char) as tuple_traits::Append>::Append, (usize, char, bool) ); ``` ## [`Cons`](https://docs.rs/tuple-traits/latest/tuple-traits/trait.Cons.html) Represent a tuple as a cons (*ish*) value, with the first value on the left, and the rest of the tuple on the right. ```rust static_assertions::assert_impl_all!( (usize, usize, usize): tuple_traits::Cons ); ``` ## [`Contains`](https://docs.rs/tuple-traits/latest/tuple-traits/trait.Contains.html) A trait that will only be implement for a given target if it is present within a given type. ```rust struct A; struct B; struct C; fn requires_c(value: T) where T: tuple_traits::Contains { } // Works! requires_c((A, B, C)); // Compiler error: `C` does not appear within `(A, B)` // requires_c((A, B)); ``` # Example Check out [`./examples/buffer-flags.rs`](./examples/buffer-flags.rs) for a full example!