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.