Даункинг и Box <Любой>

pub struct WidgetWrap {
    // ...
    widget: RefCell<Box<Any>>,
}

В какой-то момент я хочу разыгратьBox<Any> вBox<WidgetTrait>

let mut cell = widget.borrow_mut();
let w = cell.downcast_mut::<Box<WidgetTrait>>();

Это дает мне ошибку такого рода:

error: instantiating a type parameter with an incompatible type
`Box<WidgetTrait>`, which does not fulfill `'static` [E0144]

Что это на самом деле значит?

Я смотрел наКак исправить: значение может содержать ссылки; добавить `'static` привязанный к` T` и попытался добавить+ 'static везде.

pub struct WidgetWrap {
    // ...
    widget: RefCell<Box<Any + 'static>>,
}
let mut cell = widget.borrow_mut();
let w = cell.downcast_mut::<Box<WidgetTrait + 'static>>();

Он исправляет ошибки компиляции, но завершается неудачно, когда я пытаюсь развернуть окно с понижением, как показано выше. И да, содержимое коробки является объектом, который реализуетWidgetTrait.

Очевидно, я пишу в Rust на уровне, который я не совсем понимаю, но, возможно, кто-то может помочь мне лучше понять концепции, связанные с вышеупомянутой задачей.

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

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