diff --git a/src/main.rs b/src/main.rs
index 18b464619d618c7181364ad6494a464aff14316c..9a870c7815a7c8576692fb0ddbb39333e3d7fc64 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -337,12 +337,15 @@ fn check_user_presence(cid: ChannelID) -> Result<(), Ctap2StatusCode> {
         Ok(x) => x,
         Err(err) => panic!("Couldn't init buttons subsystem"),
     };
-    let _buttons_callback = match buttons_driver.subscribe(&mut |_button_num, state| {
+
+    let mut subscription = |_button_num, state| {
         match state {
             ButtonState::Pressed => button_touched.set(true),
             ButtonState::Released => (),
         };
-    }) {
+    };
+    let _buttons_callback = buttons_driver.subscribe(&mut subscription);
+    let _buttons_callback = match _buttons_callback {
         Ok(x) => x,
         Err(err) => panic!("Couldn't subscribe to button"),
     };