tuples
Provides many useful tools related to tuples
- Support no-std
- Support wasm
- Pre-generated, faster compilation
- AsRef
- AsMut
- AsOption
- AsResult
- AsDeref
- AsDerefMut
- TupleGet
- Transpose Option
- Transpose Result
- Cloned
- Copied
- Flatten
- Combin
- Split
- Mapping
- Iter
- IntoIter
- FromIter
- Collect
- Meta Trait
- Shorthand Macro
- Call
- Apply
- Swap
- Sort
- Permutations
- Combinations
Examples
For readability, most examples use homogeneous tuples, but in practice they are heterogeneous. Please refer to the documentation for details.
-
map
Single mapper mapping only supports homogeneous tuples
let a = ; let b = a.map; assert_eq!; -
mapN
let a = ; let b = a.map3; assert_eq!; -
map_all
let a = ; let b = a.map_all; assert_eq!; -
as_ref
let t = ; let = t.as_ref; assert_eq!; assert_eq!; assert_eq!; -
cloned
let a = ; let b = a.cloned; assert_eq! -
flatten
let a = ; let b = a.flatten; assert_eq!; -
meta
let a = ; assert_eq!; let b = ; assert_eq!; assert_eq!; assert_eq!; let _: Item = 3.14f64; -
const get
let a = ; let r: &char = a.; assert_eq!; let mut a = ; *a. = 'c'; -
dynamic get
Dynamic get only supports homogeneous tuples
let a = ; assert_eq!; let mut a = ; *a.get_mut = 6; -
iter
Iteraotr only supports homogeneous tuples
let a = .into_iter .map .>; let b: = ; assert_eq!;let a = .into_iter .map .>; let b: = Some; assert_eq!;let a = .into_iter .map .>; let b: = ; assert_eq!; -
transpose
let a = Some.transpose; assert_eq!; let b = .transpose; assert_eq!;let a: = ; let b: = a.transpose; assert_eq!;let a: = ; let b: = a.transpose; assert_eq!;let a: = ; let b = a.; assert_eq!; -
combin
let a = .push_right; assert_eq!; let b = .push_left; assert_eq!; let c = .concat; assert_eq! -
split
-
split_parts
let t = ; let a = t.split_2_parts; assert_eq!; let b = t.split_3_parts; assert_eq!; let c = t.split_4_parts; assert_eq!; let d = t.split_5_parts; assert_eq!; -
split_at
let t = ; let a = t.split_at_1; assert_eq!; let b = t.split_at_3; assert_eq!; let c = t.split_at_5; assert_eq!; -
split_by
let t = ; let t2 = ; let a = t.split_by_2; assert_eq!; let b = t2.split_by_2; assert_eq!; let c = t.split_by_3; assert_eq!; let d = t2.split_by_3; assert_eq!; let e = t.split_by_6; assert_eq!; -
split_to_tuple_at
let t = ; let a = t.split_to_tuple_at_1; assert_eq!; let b = t.split_to_tuple_at_3; assert_eq!; let c = t.split_to_tuple_at_5; assert_eq!; -
split_to_tuple_by
let t = ; let t2 = ; let a = t.split_to_tuple_by_2; assert_eq!; let b = t2.split_to_tuple_by_2; assert_eq!; let c = t.split_to_tuple_by_3; assert_eq!; let d = t2.split_to_tuple_by_3; assert_eq!; let e = t.split_to_tuple_by_6; assert_eq!;
-
-
call
let r = .call; assert_eq!; -
apply
let a = ; let r = foo.apply_tuple; assert_eq! -
const swap
The two items to be swapped must be of the same type
let mut a = ; a.; assert_eq!; -
dynamic swap
Dynamic swap only supports homogeneous tuples
let mut a = ; a.swap; assert_eq!; -
swap_n
Not enabled by default
Deprecated
= ["tuple_swap_n"]let mut a = ; a.swap_1_3; assert_eq!; -
sort
Sort only supports homogeneous tuples
Currently implemented sorting algorithm
- selection sort (default alias)
-
sort
let mut a = ; a.sort; assert_eq! -
sort_desc
let mut a = ; a.sort_desc; assert_eq! -
sort_by
let mut a = ; a.sort_by; assert_eq! -
sort_by_key
let mut a = ; a.sort_by_key; assert_eq! -
sort_by_key_desc
let mut a = ; a.sort_by_key_desc; assert_eq!
-
sorted / sorted_xx
Variants of Transferring Ownership
let a = ; let a = a.sorted; assert_eq!
-
permutations
let a = ; let r = a.permutations_2; assert_eq!; -
combinations
let a = ; let r = a.combinations_2; assert_eq!;