2 releases
new 0.1.1 | Nov 11, 2024 |
---|---|
0.1.0 | Nov 11, 2024 |
#1164 in Rust patterns
230 downloads per month
11KB
86 lines
Traits
Append
Append a type to a tuple.
static_assertions::assert_type_eq_all!(
<(usize, char) as tuple_traits::Append>::Append<bool>,
(usize, char, bool)
);
Cons
Represent a tuple as a cons (ish) value, with the first value on the left, and the rest of the tuple on the right.
static_assertions::assert_impl_all!(
(usize, usize, usize): tuple_traits::Cons<Left = usize, Right = (usize, usize)>
);
Contains
A trait that will only be implement for a given target if it is present within a given type.
struct A;
struct B;
struct C;
fn requires_c<T, Index>(value: T)
where
T: tuple_traits::Contains<C, Index>
{
}
// 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
for a full example!