type A = for<'a> fn() -> (); fn foo(_t: &T) where for<'a> &'a T: Iterator {} fn bar(_t: &T) where for<'a> &'a mut T: Iterator {} fn baz(_t: &T) where for<'a> <&'a T as Baz>::Foo: Iterator {}