Даункинг и 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 на уровне, который я не совсем понимаю, но, возможно, кто-то может помочь мне лучше понять концепции, связанные с вышеупомянутой задачей.