struct S; trait InOut { type Out; } fn do_fold>(init: B, f: F) {} fn bot() -> T { loop {} } fn main() { do_fold(bot(), ()); //~ ERROR `(): InOut<_>` is not satisfied }