only necessary after https://github.com/rust-lang/rust/pull/140497 https://github.com/rust-lang/rust/pull/140405 my worry is something like this, even if I can't quite exploit it ```rust trait Trait { type Assoc; } impl<T> Trait for T { type Assoc = String; } fn get_assoc<T: Trait>(x: T) -> T::Assoc { loop {} } fn foo<T: Copy + Default>(x: T) -> impl Trait<Assoc = String> + Default + Copy { let mut y = Default::default(); let mut inf1 = Default::default(); inf1 = foo(y); let inf = Default::default(); if false { return inf; } y = x; get_assoc(inf1).len() } ``` TODO: lcnr explain/figure out