Игровая площадка

лкнулся с проблемой, пытаясь создать общий вектор для структуры. Это была моя первая попытка:

#[derive(Serialize)]
struct Card {
    sections: Vec<Section<WidgetTrait>>
}

#[derive(Serialize)]
struct Section<T: WidgetTrait> {
    header: String,
    widgets: Vec<T>
}

Это привело меня к ошибке, чтоSized не реализуется иWidgetTrait Размер не известен во время компиляции.

Моя следующая попытка была использоватьBox<WidgetTrait> вот так:

#[derive(Serialize)]
struct Section {
    header: String,
    widgets: Vec<Box<WidgetTrait>>
}

Игровая площадка

Это привело меня к ошибке:

error[E0277]: the trait bound `WidgetTrait: serde::Serialize` is not satisfied
  --> src/main.rs:11:10
   |
11 | #[derive(Serialize)]
   |          ^^^^^^^^^ the trait `serde::Serialize` is not implemented for `WidgetTrait`
   |
   = note: required because of the requirements on the impl of `serde::Serialize` for `std::boxed::Box<WidgetTrait>`
   = note: required because of the requirements on the impl of `serde::Serialize` for `std::vec::Vec<std::boxed::Box<WidgetTrait>>`
   = note: required by `serde::ser::SerializeStruct::serialize_field`

Моя цель для вектора виджетов вSection структура, чтобы иметь возможность принимать различные типы виджетов, которые реализуютWidgetTrait черта, как вы бы с интерфейсом.

Ответы на вопрос(1)

Ваш ответ на вопрос