use typle::typle; #[typle(Tuple for 1..=2)] type TupleSequenceOutput where T: Tuple, T<_>: Extract, = typle_for!(i in ..T::MAX => Option::Output>); #[typle(Tuple for 1..=2)] struct SeqIntoIter where T: Tuple, T<_>: Into, { t: TupleSequenceOutput>, } #[typle(Tuple for 0..=2)] pub enum State where T: Tuple, T<_>: std::io::Read, { Invalid, S = typle_variant! {i in ..T::MAX => field: typle_for!(j in ..=i => Option>)}, }