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}