trait TraitB { type Item; } trait TraitA { fn foo>(_: T) -> Self; fn bar(_: T) -> Self; fn baz(_: T) -> Self where T: TraitB, ::Item: Copy; fn bat>(_: T) -> Self; } struct S; impl TraitA<()> for S { //~ ERROR not all trait items implemented } use std::iter::FromIterator; struct X; impl FromIterator<()> for X { //~ ERROR not all trait items implemented } fn main() {}