as *mut Box<dyn FnMut(&D)>) };
stuff(&self.data);
// works
let stuff = self.handler as *const _ as *mut Box<dyn FnMut(&D)>;
unsafe {&mut *stuff}(&self.data);
error[E0308]: mismatched types
--> src/odata.rs:14:17
|
14 | unsafe {&mut *stuff}(&self.data);
| ^^^^^^^^^^^ expected `()`, found mutable reference
|
= note: expected unit type `()`
found mutable reference `&mut Box<dyn for<'r> FnMut(&'r D)>`
Что тут происходит, это не один и тот же код?
Есть подозрение, что происходит UB
Выкинь на playground, тут сложновато читать
так при ансейфе если его нормально не упрятать всегда так происходит, не?
& -> &mut всегда уб, если я правильно помню
Обсуждают сегодня