Additional traits to enable some cursedergonomic types.
# 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!