//@ check-pass // Related to Bevy regression #115559, found in // a crater run on #118553. pub trait QueryBase { type Db; } pub trait AsyncQueryFunction<'f>: // 'f is important QueryBase>::SendDb> // bound is important { type SendDb; } pub struct QueryTable<'me, Q, DB> { _q: Option, _db: Option, _marker: Option<&'me ()>, } impl<'me, Q> QueryTable<'me, Q, ::Db> where Q: for<'f> AsyncQueryFunction<'f>, { // When borrowchechking this function we normalize `::Db` in the // function signature to `>::SendDb`, where `'?x` is an // unconstrained region variable. We then addd `>::SendDb: 'a` // as an implied bound. We currently a structural equality to decide whether this bound // should be used to prove the bound `>::SendDb: 'a`. For this // to work we may have to structurally resolve regions as the actually used vars may // otherwise be semantically equal but structurally different. pub fn get_async<'a>(&'a mut self) { panic!(); } } fn main() {}