summaryrefslogtreecommitdiff
path: root/src/shared_state.rs
diff options
context:
space:
mode:
authorMaxVerevkin <maxxverrr@gmail.com>2025-04-06 17:35:16 +0300
committerMaxVerevkin <maxxverrr@gmail.com>2025-04-06 17:35:16 +0300
commit1db06d90067ad8ce1e6e5a808acddd16aac3adec (patch)
treeabd85fcc17386d12ca67ea5408c1139fcaef4ee1 /src/shared_state.rs
parent77ba6b79be0c14483eac5ea683ab1b5dcf581058 (diff)
downloadi3bar-mango-1db06d90067ad8ce1e6e5a808acddd16aac3adec.tar.gz
use dyn trait upcasting
Diffstat (limited to 'src/shared_state.rs')
-rw-r--r--src/shared_state.rs12
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()
}
}