trait X<'a, T> where for<'b> T: X<'b, T>, for<'b> >::U: Clone, { type U: ?Sized; fn f(x: &>::U) { <>::U>::clone(x); } } impl X<'_, T> for (S,) { //~^ ERROR the trait bound `for<'b> T: X<'b, T>` is not satisfied type U = str; } pub fn main() { <(i32,) as X>::f("abc"); }