From 1db06d90067ad8ce1e6e5a808acddd16aac3adec Mon Sep 17 00:00:00 2001 From: MaxVerevkin Date: Sun, 6 Apr 2025 17:35:16 +0300 Subject: use dyn trait upcasting --- src/shared_state.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/shared_state.rs') diff --git a/src/shared_state.rs b/src/shared_state.rs index f2b8144..169107b 100644 --- a/src/shared_state.rs +++ b/src/shared_state.rs @@ -1,3 +1,5 @@ +use std::any::Any; + use crate::{ blocks_cache::BlocksCache, config::Config, @@ -16,15 +18,19 @@ pub struct SharedState { } impl SharedState { + fn downcast_provider(&mut self) -> Option<&mut T> { + ::downcast_mut(self.wm_info_provider.as_mut()) + } + pub fn get_river(&mut self) -> Option<&mut wm_info_provider::RiverInfoProvider> { - self.wm_info_provider.as_any().downcast_mut() + self.downcast_provider() } pub fn get_hyprland(&mut self) -> Option<&mut wm_info_provider::HyprlandInfoProvider> { - self.wm_info_provider.as_any().downcast_mut() + self.downcast_provider() } pub fn get_niri(&mut self) -> Option<&mut wm_info_provider::NiriInfoProvider> { - self.wm_info_provider.as_any().downcast_mut() + self.downcast_provider() } } -- cgit v1.3.1