#![allow(type_alias_bounds, unused)] use typle::typle; trait Process { type State; type Output; fn process(state: Self::State) -> Result>; } #[typle(Tuple for 0..=3)] type Alias where T: Tuple, T<_>: Process, = typle_for!(i in ..T::MAX => Option::Output>);