pub trait Trait<'a> { type Item; } impl<'a> Trait<'a> for () { type Item = (); } pub fn foo(_: T, _: F) where T: for<'a> Trait<'a>, F: for<'a> FnMut(>::Item) {} fn main() { foo((), drop) //~^ ERROR type mismatch in function arguments //~| ERROR type mismatch resolving }