У меня есть черта, и для ее реализации я бы хотел, чтобы разработчик реализовал AddAssign
;однако в результате этого моя черта, по-видимому, нуждается в Sized
:
trait Foo: ::std::ops::AddAssign {}
trait Bar: Iterator {}
(детская площадка)
Bar
компилируется нормально;Foo
, однако:
error[E0277]: the trait bound `Self: std::marker::Sized` is not satisfied
--> src/main.rs:1:1
|
1 | trait Foo: ::std::ops::AddAssign {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Self` does not have a constant size known at compile-time
|
= help: the trait `std::marker::Sized` is not implemented for `Self`
= help: consider adding a `where Self: std::marker::Sized` bound
= note: required by `std::ops::AddAssign`
Если я добавлю + Sized
к границам черты, все в порядке, но ... зачем I нужно это делать?Почему AddAssign
это не нужно?