diff --git a/crates/gpui/src/app.rs b/crates/gpui/src/app.rs index 4f86a23eff1df690e35ce28d874fc77ab275dfb6..eae798938e6690ffc5e5bb1ebb02950310eda399 100644 --- a/crates/gpui/src/app.rs +++ b/crates/gpui/src/app.rs @@ -121,10 +121,6 @@ pub trait View: Entity + Sized { } } -pub trait ReadModel { - fn read_model(&self, handle: &ModelHandle) -> &T; -} - pub trait ReadModelWith { fn read_model_with( &self, @@ -1285,6 +1281,17 @@ impl AppContext { }) } + pub fn read_model(&self, handle: &ModelHandle) -> &T { + if let Some(model) = self.models.get(&handle.model_id) { + model + .as_any() + .downcast_ref() + .expect("downcast is type safe") + } else { + panic!("circular model reference"); + } + } + pub fn add_window( &mut self, window_options: WindowOptions, @@ -2082,19 +2089,6 @@ impl AppContext { } } -impl ReadModel for AppContext { - fn read_model(&self, handle: &ModelHandle) -> &T { - if let Some(model) = self.models.get(&handle.model_id) { - model - .as_any() - .downcast_ref() - .expect("downcast is type safe") - } else { - panic!("circular model reference"); - } - } -} - impl UpdateModel for AppContext { fn update_model( &mut self, @@ -2861,12 +2855,6 @@ impl AsMut for ModelContext<'_, M> { } } -impl ReadModel for ModelContext<'_, M> { - fn read_model(&self, handle: &ModelHandle) -> &T { - self.app.read_model(handle) - } -} - impl UpdateModel for ModelContext<'_, M> { fn update_model( &mut self, @@ -3466,12 +3454,6 @@ impl UpgradeViewHandle for ViewContext<'_, '_, V> { } } -impl ReadModel for ViewContext<'_, '_, V> { - fn read_model(&self, handle: &ModelHandle) -> &T { - self.window_context.read_model(handle) - } -} - impl UpdateModel for ViewContext<'_, '_, V> { fn update_model( &mut self, @@ -3685,7 +3667,7 @@ impl ModelHandle { self.model_id } - pub fn read<'a, C: ReadModel>(&self, cx: &'a C) -> &'a T { + pub fn read<'a>(&self, cx: &'a AppContext) -> &'a T { cx.read_model(self) } diff --git a/crates/gpui/src/app/window.rs b/crates/gpui/src/app/window.rs index a28507a095e1c7ae5996ead6060ccfb514d0df09..33405e91631449b5f9b13e182df08fe62072184a 100644 --- a/crates/gpui/src/app/window.rs +++ b/crates/gpui/src/app/window.rs @@ -15,7 +15,7 @@ use crate::{ util::post_inc, Action, AnyModelHandle, AnyView, AnyViewHandle, AnyWeakModelHandle, AnyWeakViewHandle, AppContext, Effect, Element, Entity, Handle, ModelContext, ModelHandle, MouseRegion, - MouseRegionId, ParentId, ReadModel, SceneBuilder, Subscription, UpdateModel, UpdateView, + MouseRegionId, ParentId, SceneBuilder, Subscription, UpdateModel, UpdateView, UpgradeModelHandle, UpgradeViewHandle, View, ViewContext, ViewHandle, WeakModelHandle, WeakViewHandle, WindowInvalidation, }; @@ -133,12 +133,6 @@ impl DerefMut for WindowContext<'_> { } } -impl ReadModel for WindowContext<'_> { - fn read_model(&self, handle: &ModelHandle) -> &T { - self.app_context.read_model(handle) - } -} - impl UpdateModel for WindowContext<'_> { fn update_model( &mut self,