error[E0277]: the trait bound `foo::Struct: Trait` is not satisfied --> foo-current.rs:13:19 | 13 | check_trait::(); | ^^^^^^^^^^^ the trait `Trait` is not implemented for `foo::Struct` | note: there are multiple different versions of crate `foo` in the dependency graph --> foo-current.rs:7:1 | 4 | extern crate foo; | ----------------- one version of crate `foo` used here, as a direct dependency of the current crate 5 | 6 | pub struct Struct; | ----------------- this type implements the required trait 7 | pub trait Trait {} | ^^^^^^^^^^^^^^^ this is the required trait | ::: foo-prev.rs:X:Y | 4 | pub struct Struct; | ----------------- this type doesn't implement the required trait 5 | pub trait Trait {} | --------------- this is the found trait = note: two types coming from two different versions of the same crate are different types even if they look the same = help: you can use `cargo tree` to explore your dependency tree note: required by a bound in `check_trait` --> foo-current.rs:10:19 | 10 | fn check_trait() {} | ^^^^^ required by this bound in `check_trait` error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0277`.