midenc_hir/eq.rs
1use core::any::Any;
2
3/// A type-erased version of [PartialEq]
4pub trait DynPartialEq: Any {
5 fn dyn_eq(&self, rhs: &dyn DynPartialEq) -> bool;
6}
7
8impl<T> DynPartialEq for T
9where
10 T: PartialEq + 'static,
11{
12 #[inline]
13 default fn dyn_eq(&self, rhs: &dyn DynPartialEq) -> bool {
14 let rhs = rhs as &dyn Any;
15 rhs.downcast_ref::<T>().map(|rhs| self.eq(rhs)).unwrap_or(false)
16 }
17}