pub struct Out<A, B = ()> { a: A, b: B, } pub struct First<In = ()> { in_: In, } pub struct Second; // Out<First<Second>> pub fn alef() -> Out<First<Second>> { loop {} } pub fn bet() -> Out<First, Second> { loop {} }