Macro frunk::hlist

source ·
macro_rules! hlist {
    () => { ... };
    (...$rest:expr) => { ... };
    ($a:expr) => { ... };
    ($a:expr, $($tok:tt)*) => { ... };
}
Expand description

Returns an HList based on the values passed in.

Helps to avoid having to write nested HCons.

Examples

let h = hlist![13.5f32, "hello", Some(41)];
let (h1, (h2, h3)) = h.into_tuple2();
assert_eq!(h1, 13.5f32);
assert_eq!(h2, "hello");
assert_eq!(h3, Some(41));

// Also works when you have trailing commas
let h4 = hlist!["yo",];
let h5 = hlist![13.5f32, "hello", Some(41),];
assert_eq!(h4, hlist!["yo"]);
assert_eq!(h5, hlist![13.5f32, "hello", Some(41)]);

// Use "...tail" to append an existing list at the end
let h6 = hlist![12, ...h5];
assert_eq!(h6, hlist![12, 13.5f32, "hello", Some(41)]);
Run