Macro tuples::tuple

source ·
macro_rules! tuple {
    { $($t:tt)* } => { ... };
}
Expand description

Convenient shorthand

Syntax

  • tuple![<type>; <repeat times>]
  • tuple![<expr>; <repeat times>]
  • tuple![<tuple size>; <type>, <type> ...]

Examples

Repeat type

let a: tuple![u8; 3] = (5, 5, 5);

Repeat expr

let a: (u8, u8, u8) = tuple![5; 3];

Auto types

let a: tuple![3; u8] = (5, 5, 5usize);
let b: (u8, i32, usize) = tuple![5; 3];
assert_eq!(a, b);

Iter

let a = (1, 2, 3)
    .into_iter()
    .map(|v| v * 3)
    .collect_tuple::<tuple![3;]>();
let b: (i32, i32, i32) = (3, 6, 9);
assert_eq!(a, b);

tuple![u8; 3] => (u8, u8, u8)
tuple![5; 3] => (5, 5, 5)
tuple![3; u8, u8, u8] => (u8, u8, u8)
tuple![3; u8] => (u8, _, _)
tuple![3;] => (_, _, _)