let x: Box<dyn Foo> = Box::new(0_i32);
let x_value: Box<i32> = x.downcast::<i32>().unwrap();
}
пишет no method named `downcast` found for struct `Box<(dyn Foo + 'static)>` in the current scope. Как здесь правильно даункастить?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=b2eadfb6a9415349e77cb4d1aa4bcd22
https://docs.rs/downcast-rs/latest/downcast_rs/index.html только так? встроенного способа нет7
https://lib.rs/crates/mopa
Но да, пока что даункаст трейт объектов не сделали (оно в процессе), приходится делать отдельные методы для кастов
https://docs.rs/mopa/latest/src/mopa/lib.rs.html#325 а это точно safe делать такой трансмьют? если да то я просто его и сделаю
нет, это точно не сейв
бери лучше downcast_rs, там правильнее сделано вроде
только там нет unsafe_downcast, а хотелось бы
А что за unsafe_downcast и зачем он тебе?
который не проверяет что self.is::<T>()
Такого вроде нигде нет afaik, в std я не нашёл по крайней мере
Обсуждают сегодня