From 76a3dd62793aa950a4f8261c2a9b0908c6ff6525 Mon Sep 17 00:00:00 2001 From: Jason Rodney Hansen Date: Sun, 5 Jan 2025 13:50:08 -0700 Subject: [PATCH] Fix crash for dialog in debug mode `Subscription::map` must be provided a non-capturing closure. A couple places were passing capturing closures, which caused a debug assert failure. These have been fixed. --- src/dialog.rs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/dialog.rs b/src/dialog.rs index 35ab020..a5a792a 100644 --- a/src/dialog.rs +++ b/src/dialog.rs @@ -251,7 +251,8 @@ impl Dialog { self.cosmic .subscription() .map(DialogMessage) - .map(self.mapper) + .with(self.mapper) + .map(|(mapper, message)| mapper(message)) } pub fn update(&mut self, message: DialogMessage) -> Task { @@ -1709,16 +1710,17 @@ impl Application for App { ]; for (key, mounter) in MOUNTERS.iter() { - let key = *key; - subscriptions.push(mounter.subscription().map(move |mounter_message| { - match mounter_message { - MounterMessage::Items(items) => Message::MounterItems(key, items), - _ => { - log::warn!("{:?} not supported in dialog mode", mounter_message); - Message::None - } - } - })); + subscriptions.push( + mounter.subscription().with(*key).map( + |(key, mounter_message)| match mounter_message { + MounterMessage::Items(items) => Message::MounterItems(key, items), + _ => { + log::warn!("{:?} not supported in dialog mode", mounter_message); + Message::None + } + }, + ), + ); } Subscription::batch(subscriptions)