MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / eq

Method eq

crates/wasmtime/src/runtime/component/values.rs:724–793  ·  view source on GitHub ↗
(&self, other: &Self)

Source from the content-addressed store, hash-verified

722
723impl PartialEq for Val {
724 fn eq(&self, other: &Self) -> bool {
725 match (self, other) {
726 // IEEE 754 equality considers NaN inequal to NaN and negative zero
727 // equal to positive zero, however we do the opposite here, because
728 // this logic is used by testing and fuzzing, which want to know
729 // whether two values are semantically the same, rather than
730 // numerically equal.
731 (Self::Float32(l), Self::Float32(r)) => {
732 (*l != 0.0 && l == r)
733 || (*l == 0.0 && l.to_bits() == r.to_bits())
734 || (l.is_nan() && r.is_nan())
735 }
736 (Self::Float32(_), _) => false,
737 (Self::Float64(l), Self::Float64(r)) => {
738 (*l != 0.0 && l == r)
739 || (*l == 0.0 && l.to_bits() == r.to_bits())
740 || (l.is_nan() && r.is_nan())
741 }
742 (Self::Float64(_), _) => false,
743
744 (Self::Bool(l), Self::Bool(r)) => l == r,
745 (Self::Bool(_), _) => false,
746 (Self::S8(l), Self::S8(r)) => l == r,
747 (Self::S8(_), _) => false,
748 (Self::U8(l), Self::U8(r)) => l == r,
749 (Self::U8(_), _) => false,
750 (Self::S16(l), Self::S16(r)) => l == r,
751 (Self::S16(_), _) => false,
752 (Self::U16(l), Self::U16(r)) => l == r,
753 (Self::U16(_), _) => false,
754 (Self::S32(l), Self::S32(r)) => l == r,
755 (Self::S32(_), _) => false,
756 (Self::U32(l), Self::U32(r)) => l == r,
757 (Self::U32(_), _) => false,
758 (Self::S64(l), Self::S64(r)) => l == r,
759 (Self::S64(_), _) => false,
760 (Self::U64(l), Self::U64(r)) => l == r,
761 (Self::U64(_), _) => false,
762 (Self::Char(l), Self::Char(r)) => l == r,
763 (Self::Char(_), _) => false,
764 (Self::String(l), Self::String(r)) => l == r,
765 (Self::String(_), _) => false,
766 (Self::List(l), Self::List(r)) => l == r,
767 (Self::List(_), _) => false,
768 (Self::Map(l), Self::Map(r)) => l == r,
769 (Self::Map(_), _) => false,
770 (Self::Record(l), Self::Record(r)) => l == r,
771 (Self::Record(_), _) => false,
772 (Self::Tuple(l), Self::Tuple(r)) => l == r,
773 (Self::Tuple(_), _) => false,
774 (Self::Variant(ln, lv), Self::Variant(rn, rv)) => ln == rn && lv == rv,
775 (Self::Variant(..), _) => false,
776 (Self::Enum(l), Self::Enum(r)) => l == r,
777 (Self::Enum(_), _) => false,
778 (Self::Option(l), Self::Option(r)) => l == r,
779 (Self::Option(_), _) => false,
780 (Self::Result(l), Self::Result(r)) => l == r,
781 (Self::Result(_), _) => false,

Callers

nothing calls this directly

Calls 2

is_nanMethod · 0.80
to_bitsMethod · 0.45

Tested by

no test coverage detected