use std::ops::Deref; | |
trait Trait1 { | |
fn call_me(&self) {} | |
} | |
impl<T> Trait1 for T {} | |
trait Trait2 { | |
fn call_me(&self) {} | |
} | |
impl<T> Trait2 for T {} | |
pub fn foo<T, U>(x: T) | |
where | |
T: Deref<Target = U>, | |
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() {} |