From 3b3428d67ec465ee860c9cafcb10b99a2a2d37ec Mon Sep 17 00:00:00 2001 From: Mica White Date: Mon, 11 May 2026 15:02:39 -0400 Subject: Simple macros --- examples/split.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 examples/split.rs (limited to 'examples/split.rs') diff --git a/examples/split.rs b/examples/split.rs new file mode 100644 index 0000000..c2f6b82 --- /dev/null +++ b/examples/split.rs @@ -0,0 +1,20 @@ +use varihappy::{Tuple, Tuple1, Tuple2}; + +type HeadOf = ::Item0; +type RestOf = <<<::Rest as Tuple>::Reversed as Tuple1>::Rest as Tuple>::Reversed; +type TailOf = <<::Rest as Tuple>::Reversed as Tuple1>::Item0; + +fn split(tuple: T) -> (HeadOf, RestOf, TailOf) +where + T: Tuple2, + <::Rest as Tuple>::Reversed: Tuple1, +{ + let (head, rest) = tuple.split_into(); + let (tail, rest) = rest.rev().split_into(); + (head, rest.rev(), tail) +} + +fn main() { + let (_head, _rest, _tail): (i32, (), &str) = split((42, "foo")); + let (_head, _rest, _tail): (i32, (f64, bool, ()), &str) = split((42, 12.3, false, (), "foo")); +} -- cgit v1.2.3