## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Error code E0229

An associated item constraint was written in an unexpected context.

Erroneous code example:

    #![allow(unused)]
    fn main() {
    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:

    #![allow(unused)]
    fn main() {
    struct Bar;
    trait Foo { type A; }
    fn baz<I: Foo<A=Bar>>(x: &<I as Foo>::A) {} // ok!
    }

Or into the where-clause:

    #![allow(unused)]
    fn main() {
    struct Bar;
    trait Foo { type A; }
    fn baz<I>(x: &<I as Foo>::A) where I: Foo<A=Bar> {}
    }