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 всегда уб, если я правильно помню
Обсуждают сегодня