chore: Replace as_any functions with trait upcasting (#28221)

Closes #ISSUE

Release Notes:

- N/A
This commit is contained in:
Piotr Osiewicz 2025-04-08 22:16:27 +02:00 committed by GitHub
parent 38ec45008c
commit 0b75c13034
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 23 additions and 87 deletions

View file

@ -746,8 +746,7 @@ pub struct Session {
_background_tasks: Vec<Task<()>>,
}
trait CacheableCommand: 'static + Send + Sync {
fn as_any(&self) -> &dyn Any;
trait CacheableCommand: Any + Send + Sync {
fn dyn_eq(&self, rhs: &dyn CacheableCommand) -> bool;
fn dyn_hash(&self, hasher: &mut dyn Hasher);
fn as_any_arc(self: Arc<Self>) -> Arc<dyn Any + Send + Sync>;
@ -757,12 +756,8 @@ impl<T> CacheableCommand for T
where
T: DapCommand + PartialEq + Eq + Hash,
{
fn as_any(&self) -> &dyn Any {
self
}
fn dyn_eq(&self, rhs: &dyn CacheableCommand) -> bool {
rhs.as_any()
(rhs as &dyn Any)
.downcast_ref::<Self>()
.map_or(false, |rhs| self == rhs)
}
@ -795,7 +790,7 @@ impl Eq for RequestSlot {}
impl Hash for RequestSlot {
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
self.0.dyn_hash(state);
self.0.as_any().type_id().hash(state)
(&*self.0 as &dyn Any).type_id().hash(state)
}
}
@ -1345,7 +1340,7 @@ impl Session {
fn invalidate_state(&mut self, key: &RequestSlot) {
self.requests
.entry(key.0.as_any().type_id())
.entry((&*key.0 as &dyn Any).type_id())
.and_modify(|request_map| {
request_map.remove(&key);
});