gpui2: Fix instance of map_entry lint

Piotr Osiewicz created

Change summary

crates/gpui2/src/window.rs | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

Detailed changes

crates/gpui2/src/window.rs 🔗

@@ -26,6 +26,7 @@ use std::{
     any::{Any, TypeId},
     borrow::{Borrow, BorrowMut, Cow},
     cell::RefCell,
+    collections::hash_map::Entry,
     fmt::Debug,
     future::Future,
     hash::{Hash, Hasher},
@@ -637,7 +638,8 @@ impl<'a> WindowContext<'a> {
         let handle = self.window.handle;
         let display_id = self.window.display_id;
 
-        if !self.frame_consumers.contains_key(&display_id) {
+        let mut frame_consumers = std::mem::take(&mut self.app.frame_consumers);
+        if let Entry::Vacant(e) = frame_consumers.entry(display_id) {
             let (tx, mut rx) = mpsc::unbounded::<()>();
             self.platform.set_display_link_output_callback(
                 display_id,
@@ -669,8 +671,10 @@ impl<'a> WindowContext<'a> {
                     .ok();
                 }
             });
-            self.frame_consumers.insert(display_id, consumer_task);
+            e.insert(consumer_task);
         }
+        debug_assert!(self.app.frame_consumers.is_empty());
+        self.app.frame_consumers = frame_consumers;
 
         if self.next_frame_callbacks.is_empty() {
             self.platform.start_display_link(display_id);