Downcasting e Box <Any>

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

Em algum momento eu quero lançarBox<Any> paraBox<WidgetTrait>

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

Isso me dá um erro desse tipo:

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

O que isso realmente significa?

Eu olheiComo corrigir: o valor pode conter referências; adicione `` static` vinculado a `T` e tentei adicionar+ 'static em toda parte.

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

Ele corrige os erros de compilação, mas falha quando tento desembrulhar a caixa de baixa, como mostrado acima. E sim, o conteúdo da caixa é um objeto que implementaWidgetTrait.

Obviamente, estou codificando Rust em um nível que não entendo direito, mas talvez alguém possa me ajudar a entender melhor os conceitos envolvidos na tarefa acima.

questionAnswers(2)

yourAnswerToTheQuestion