diff --git a/packages/core/src/nodes.rs b/packages/core/src/nodes.rs index cc9ac2829..7432057fe 100644 --- a/packages/core/src/nodes.rs +++ b/packages/core/src/nodes.rs @@ -500,11 +500,11 @@ pub trait AnyValue: Sync + Send + 'static { #[cfg(feature = "sync_attributes")] impl AnyValue for T { fn any_cmp(&self, other: &dyn AnyValue) -> bool { - if self.type_id() != other.type_id() { + if let Some(other) = other.as_any().downcast_ref() { + self == other + } else { return false; } - - self == unsafe { &*(other as *const _ as *const T) } } fn as_any(&self) -> &dyn Any { @@ -525,11 +525,11 @@ pub trait AnyValue: 'static { #[cfg(not(feature = "sync_attributes"))] impl AnyValue for T { fn any_cmp(&self, other: &dyn AnyValue) -> bool { - if self.type_id() != other.type_id() { + if let Some(other) = other.as_any().downcast_ref() { + self == other + } else { return false; } - - self == unsafe { &*(other as *const _ as *const T) } } fn as_any(&self) -> &dyn Any {