Skip to content

Commit c213660

Browse files
committed
remove unnecessary use of Box in key_for_each
1 parent d12adf7 commit c213660

File tree

1 file changed

+8
-11
lines changed

1 file changed

+8
-11
lines changed

src/xkb/mod.rs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -792,25 +792,22 @@ impl Keymap {
792792
) where
793793
F: FnMut(&Keymap, Keycode),
794794
{
795-
let mut data_box: Box<(&Keymap, F)> = mem::transmute(Box::from_raw(data));
796-
{
797-
let (keymap, ref mut closure) = *data_box;
798-
closure(keymap, key.into());
799-
}
800-
let _ = Box::into_raw(data_box);
795+
let (keymap, closure) = &mut *data.cast::<(&Keymap, F)>();
796+
closure(keymap, key.into());
801797
}
802798

803799
/// Run a specified closure for every valid keycode in the keymap.
804800
pub fn key_for_each<F>(&self, closure: F)
805801
where
806802
F: FnMut(&Keymap, Keycode),
807803
{
808-
let data_box = Box::new((self, closure));
809-
let data_ptr = Box::into_raw(data_box).cast();
810-
804+
let mut data = (self, closure);
811805
unsafe {
812-
ffi::xkb_keymap_key_for_each(self.get_raw_ptr(), Self::callback::<F>, data_ptr);
813-
mem::drop(Box::from_raw(data_ptr.cast::<(&Keymap, F)>()));
806+
ffi::xkb_keymap_key_for_each(
807+
self.get_raw_ptr(),
808+
Self::callback::<F>,
809+
&mut data as *mut _ as *mut _,
810+
);
814811
}
815812
}
816813

0 commit comments

Comments
 (0)