]> git.lizzy.rs Git - rust.git/blob - compiler/rustc_error_codes/src/error_codes/E0719.md
Rollup merge of #93556 - dtolnay:trailingcomma, r=cjgillot
[rust.git] / compiler / rustc_error_codes / src / error_codes / E0719.md
1 An associated type value was specified more than once.
2
3 Erroneous code example:
4
5 ```compile_fail,E0719
6 #![feature(associated_type_bounds)]
7
8 trait FooTrait {}
9 trait BarTrait {}
10
11 // error: associated type `Item` in trait `Iterator` is specified twice
12 struct Foo<T: Iterator<Item: FooTrait, Item: BarTrait>> { f: T }
13 ```
14
15 `Item` in trait `Iterator` cannot be specified multiple times for struct `Foo`.
16 To fix this, create a new trait that is a combination of the desired traits and
17 specify the associated type with the new trait.
18
19 Corrected example:
20
21 ```
22 #![feature(associated_type_bounds)]
23
24 trait FooTrait {}
25 trait BarTrait {}
26 trait FooBarTrait: FooTrait + BarTrait {}
27
28 struct Foo<T: Iterator<Item: FooBarTrait>> { f: T } // ok!
29 ```
30
31 For more information about associated types, see [the book][bk-at]. For more
32 information on associated type bounds, see [RFC 2289][rfc-2289].
33
34 [bk-at]: https://doc.rust-lang.org/book/ch19-03-advanced-traits.html#specifying-placeholder-types-in-trait-definitions-with-associated-types
35 [rfc-2289]: https://rust-lang.github.io/rfcs/2289-associated-type-bounds.html