A type mismatched an associated type of a trait. Erroneous code example: ```compile_fail,E0271 trait Trait { type AssociatedType; } fn foo(t: T) where T: Trait { // ~~~~~~~~ ~~~~~~~~~~~~~~~~~~ // | | // This says `foo` can | // only be used with | // some type that | // implements `Trait`. | // | // This says not only must // `T` be an impl of `Trait` // but also that the impl // must assign the type `u32` // to the associated type. println!("in foo"); } impl Trait for i8 { type AssociatedType = &'static str; } //~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // | | // `i8` does have | // implementation | // of `Trait`... | // ... but it is an implementation // that assigns `&'static str` to // the associated type. foo(3_i8); // Here, we invoke `foo` with an `i8`, which does not satisfy // the constraint `::AssociatedType=u32`, and // therefore the type-checker complains with this error code. ``` The issue can be resolved by changing the associated type: 1) in the `foo` implementation: ``` trait Trait { type AssociatedType; } fn foo(t: T) where T: Trait { println!("in foo"); } impl Trait for i8 { type AssociatedType = &'static str; } foo(3_i8); ``` 2) in the `Trait` implementation for `i8`: ``` trait Trait { type AssociatedType; } fn foo(t: T) where T: Trait { println!("in foo"); } impl Trait for i8 { type AssociatedType = u32; } foo(3_i8); ```