MB
Size: a a a
OA
AZ
AZ
AZ
r
trait BoxedClone {
fn clonse(&self) -> Box<Self>
}
trait BoxedClone {
fn clonse(&self) -> Box<dyn BoxedClone>
}
impl BoxedClone for Foo
вместо Self
будет подставлен Foo
, а не dyn BoxedClone
AZ
impl BoxedClone for Foo
вместо Self
будет подставлен Foo
, а не dyn BoxedClone
OA
А⚙
r
Box<Type> where Type: Sized
и Box<dyn Trait>
разные размеры. Не думаю, что можно реализовать функцию возвращающую тип, содержащий Box<Self>
, без ограничения Self: Sized
, что делает невозможным её использование через динамическую диспетчеризациюAZ
r
Box<Box<Type>>
всегда имеет один и тот же размер, но вернуть его всё-равно нельзя.2 | fn clonedyn(&self) -> Box<Box<Self>>;
| -------- method `clonedyn` references the `Self` type in its parameters or return type
r
dyn Trait
p
p
AZ
DF
DF
OA