diff options
| author | MaxVerevkin <maxxverrr@gmail.com> | 2025-04-06 17:35:16 +0300 |
|---|---|---|
| committer | MaxVerevkin <maxxverrr@gmail.com> | 2025-04-06 17:35:16 +0300 |
| commit | 1db06d90067ad8ce1e6e5a808acddd16aac3adec (patch) | |
| tree | abd85fcc17386d12ca67ea5408c1139fcaef4ee1 /src/shared_state.rs | |
| parent | 77ba6b79be0c14483eac5ea683ab1b5dcf581058 (diff) | |
| download | i3bar-mango-1db06d90067ad8ce1e6e5a808acddd16aac3adec.tar.gz | |
use dyn trait upcasting
Diffstat (limited to 'src/shared_state.rs')
| -rw-r--r-- | src/shared_state.rs | 12 |
1 files changed, 9 insertions, 3 deletions
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<T: Any>(&mut self) -> Option<&mut T> { + <dyn Any>::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() } } |
