//@ known-bug: #120811 trait Container { type Item<'a>; } impl Container for () { type Item<'a> = (); } struct Exchange { _marker: std::marker::PhantomData<(C, F)>, } fn exchange(_: F) -> Exchange where C: Container, for<'a> F: FnMut(&C::Item<'a>), { unimplemented!() } trait Parallelization {} impl Parallelization for Exchange {} fn unary_frontier>(_: P) {} fn main() { let exchange = exchange(|_| ()); let _ = || { unary_frontier(exchange); }; }