5 unstable releases
| 0.3.0 | Jun 29, 2022 |
|---|---|
| 0.2.0 | Jun 29, 2022 |
| 0.1.2 | Jun 28, 2022 |
| 0.1.1 | Jun 27, 2022 |
| 0.1.0 | Jun 27, 2022 |
#17 in #structural
2,535 downloads per month
10KB
137 lines
Structural operations for tuples
This crate implements splitting and joining tuples.
The traits are implemented for tuples from zero len (ie, () unit) to 16.
(More with with the tuple_24 and tuple_32 features enabled.)
They are implemented for both tuples by value and reference, which either consume or borrow their inputs respectively.
An example of TupleJoin by value:
use tuplestructops::TupleJoin;
let out = (1,'a',"b").join((1., 2.));
println!("out {out:?}");
TupleSplit does the converse. It relies on pattern matching to determine
the split.
use tuplestructops::TupleSplit;
let out: (_, (_,_,_)) = (1,2,3,4,5).split();
println!("out {out:?}");
Structural operations for Tuples
This crate implements three operations for tuples:
- join
- split
- index
For example, you can simply concatenate two tuples with:
use tuplestructops::TupleJoin;
let concat = (1, 'b', 3).join(('a', 5, 'c'));
This crate focuses purely on the overall structure of tuples, and is completely agnostic to the types of their elements.
The implementations are O(N^2) in the number of tuple elements. By default they're implemented for up to 16 elements, but the additional
- tuple_24
- tuple_32
features allow the traits to be implemented for more elements.
The impl_docs feature enables documentation of the trait implementations for
all the tuple types. It is disabled by default since it's very repetitive.