use std::ops::Deref; trait Trait1 { fn call_me(&self) {} } impl Trait1 for T {} trait Trait2 { fn call_me(&self) {} } impl Trait2 for T {} pub fn foo(x: T) where T: Deref, U: Trait1, { // This should be ambiguous. The fact that there's an inherent where-bound // candidate for `U` should not impact the candidates for `T` x.call_me(); //~^ ERROR multiple applicable items in scope } fn main() {}