1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
// check-pass #![allow(incomplete_features)] #![feature(associated_type_bounds)] trait MP { type T<'a>; } struct S(String); impl MP for S { type T<'a> = &'a str; } trait SR: MP { fn sr<IM>(&self) -> i32 where for<'a> IM: T<T: U<<Self as MP>::T<'a>>>; } trait T { type T; } trait U<X> {} fn main() {}