Rust errors / Const, static and compile-time
Rust compiler error · checked with rustc 1.99.0
Rust error E0229: associated item constraints are not allowed here
What it meansAn associated item constraint was written in an unexpected context.
What rustc prints
error[E0229]: associated item constraints are not allowed here --> main.rs:13:25 | 13 | fn baz<I>(x: &<I as Foo<A = Bar>>::A) {} | ^^^^^^^ associated item constraint not allowed here | help: consider removing this associated item binding | 13 - fn baz<I>(x: &<I as Foo<A = Bar>>::A) {} 13 + fn baz<I>(x: &<I as Foo>::A) {} |
Real output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
An associated item constraint was written in an unexpected context.
Erroneous code example:
pub trait Foo {
type A;
fn boo(&self) -> <Self as Foo>::A;
}
struct Bar;
impl Foo for isize {
type A = usize;
fn boo(&self) -> usize { 42 }
}
fn baz<I>(x: &<I as Foo<A = Bar>>::A) {}
// error: associated item constraint are not allowed here
To solve this error, please move the associated item constraints to the type parameter declaration:
fn baz<I: Foo<A=Bar>>(x: &<I as Foo>::A) {} // ok!
Or into the where-clause:
fn baz<I>(x: &<I as Foo>::A) where I: Foo<A=Bar> {}From rustc --explain E0229 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
Up next
Often hit nextE0015: cannot call non-const fn in constantsA related error from the same family.Read it next →Did this answer your question?