5 unstable releases

Uses new Rust 2021

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

#947 in Rust patterns

Download history 121/week @ 2022-08-13 135/week @ 2022-08-20 119/week @ 2022-08-27 146/week @ 2022-09-03 197/week @ 2022-09-10 115/week @ 2022-09-17 112/week @ 2022-09-24 138/week @ 2022-10-01 207/week @ 2022-10-08 169/week @ 2022-10-15 84/week @ 2022-10-22 137/week @ 2022-10-29 111/week @ 2022-11-05 59/week @ 2022-11-12 91/week @ 2022-11-19 131/week @ 2022-11-26

408 downloads per month

MIT/Apache

10KB
137 lines

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.


lib.rs:

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:?}");

Dependencies