Rust errors / Types and traits
Rust compiler error · checked with rustc 1.99.0
Rust error E0223: ambiguous associated type
What it meansAn attempt was made to retrieve an associated type, but the type was ambiguous.
What rustc prints
error[E0223]: ambiguous associated type --> main.rs:4:14 | 4 | let foo: Trait::X; | ^^^^^^^^ | help: if there were a type named `Example` that implemented `Trait`, you could use the fully-qualified path | 4 - let foo: Trait::X; 4 + let foo: <Example as Trait>::X; |
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 attempt was made to retrieve an associated type, but the type was ambiguous.
Erroneous code example:
trait Trait { type X; }
fn main() {
let foo: Trait::X;
}
The problem here is that we're attempting to take the associated type of X from Trait. Unfortunately, the type of X is not defined, because it's only made concrete in implementations of the trait. A working version of this code might look like:
trait Trait { type X; }
struct Struct;
impl Trait for Struct {
type X = u32;
}
fn main() {
let foo: <Struct as Trait>::X;
}
This syntax specifies that we want the associated type X from Struct's implementation of Trait.
Due to internal limitations of the current compiler implementation we cannot simply use Struct::X.
From rustc --explain E0223 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0308mismatched types
- E0277the trait bound is not satisfied
- E0599no method named X found in the current scope
- E0433failed to resolve
- E0221ambiguous associated type `A` in bounds of `Self`
- E0222ambiguous associated type `Color` in bounds of `BoxCar`
- E0224at least one trait is required for an object type
- E0225only auto traits can be used as additional traits in a trait object
Up next
Often hit nextE0308: mismatched typesA related error from the same family.Read it next →Did this answer your question?