I'm playing around with traits and found that Sized is required when using Self as a type parameter:
trait Foo: Sized { // does not compile without Sized type Bar: Baz<F = Self>; type Quiz: Qux<Self> } trait Baz { type F: Foo; } trait Qux<F: Foo> {} Why does is matter to be Sized for Self? Why is it required to be specified explicitly and what's wrong with not Sized type in this situation?