1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
// check-pass pub trait Trait<'a> { type Item; } impl<'a> Trait<'a> for () { type Item = (); } pub fn foo<T, F>(_: T, _: F) where T: for<'a> Trait<'a>, F: for<'a> FnMut(<T as Trait<'a>>::Item), { } fn main() { foo((), drop) }