error[E0282]: type annotations needed for `Vec` --> $DIR/method-ambig-one-trait-unknown-int-type.rs:24:9 | LL | let mut x = Vec::new(); | ^^^^^ | help: consider giving `x` an explicit type, where the type for type parameter `T` is specified | LL | let mut x: Vec = Vec::new(); | ++++++++ error[E0283]: type annotations needed --> $DIR/method-ambig-one-trait-unknown-int-type.rs:26:7 | LL | x.foo(); | ^^^ | note: multiple `impl`s satisfying `Vec<_>: Foo` found --> $DIR/method-ambig-one-trait-unknown-int-type.rs:9:1 | LL | impl Foo for Vec { | ^^^^^^^^^^^^^^^^^^^^^^^ ... LL | impl Foo for Vec { | ^^^^^^^^^^^^^^^^^^^^^^^ help: try using a fully qualified path to specify the expected types | LL | as Foo>::foo(&x); | ++++++++++++++++++++++ ~ error[E0308]: mismatched types --> $DIR/method-ambig-one-trait-unknown-int-type.rs:33:20 | LL | let y: usize = x.foo(); | ----- ^^^^^^^ expected `usize`, found `isize` | | | expected due to this | help: you can convert an `isize` to a `usize` and panic if the converted value doesn't fit | LL | let y: usize = x.foo().try_into().unwrap(); | ++++++++++++++++++++ error: aborting due to 3 previous errors Some errors have detailed explanations: E0282, E0283, E0308. For more information about an error, try `rustc --explain E0282`.