|  | error[E0277]: the trait bound `foo::Struct: Trait` is not satisfied | 
|  | --> foo-current.rs:13:19 | 
|  | | | 
|  | 13 |     check_trait::<foo::Struct>(); | 
|  | |                   ^^^^^^^^^^^ 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<T: 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`. |