macro_rules! mconnect { ($sender:ident, $signal:ident, $slot:tt) => { fn internal_safe_connect + FnMut() -> ()>( sender: &RefCell, signal: &Signal, slot: F, ) -> ConnectionHandle { let sender = unsafe { QObjectPinned::new(&sender).get_or_create_cpp_object() }; unsafe { connect(sender, *signal, slot) } } let signal = $sender.borrow().$signal.to_cpp_representation(&*$sender.borrow()); #[allow(unused_parens)] internal_safe_connect(&$sender, &signal, $slot); }; }