// Taken directly from that issue. // // This test detected that we didn't correctly resolve // inference variables when computing implied bounds. // // check-pass pub trait BuilderFn<'a> { type Output; } impl<'a, F, Out> BuilderFn<'a> for F where F: FnOnce(&'a mut ()) -> Out, { type Output = Out; } pub trait ConstructionFirm { type Builder: for<'a> BuilderFn<'a>; } pub trait Campus where T: ConstructionFirm, { fn add_building( &mut self, building: &mut <::Builder as BuilderFn<'_>>::Output, ); } struct ArchitectsInc {} impl ConstructionFirm for ArchitectsInc { type Builder = fn(&mut ()) -> PrettyCondo<'_>; } struct PrettyCondo<'a> { _marker: &'a mut (), } struct CondoEstate {} impl Campus for CondoEstate { fn add_building(&mut self, _building: &mut PrettyCondo<'_>) { todo!() } } fn main() {}