snarkvm_console_program/data/value/
equal.rs1use super::*;
17
18impl<N: Network> Eq for Value<N> {}
19
20impl<N: Network> PartialEq for Value<N> {
21 fn eq(&self, other: &Self) -> bool {
23 *self.is_equal(other)
24 }
25}
26
27impl<N: Network> Equal<Self> for Value<N> {
28 type Output = Boolean<N>;
29
30 fn is_equal(&self, other: &Self) -> Self::Output {
32 match (self, other) {
33 (Self::Plaintext(a), Self::Plaintext(b)) => a.is_equal(b),
34 (Self::Record(a), Self::Record(b)) => a.is_equal(b),
35 (Self::Future(a), Self::Future(b)) => a.is_equal(b),
36 (Self::DynamicRecord(a), Self::DynamicRecord(b)) => a.is_equal(b),
37 (Self::DynamicFuture(a), Self::DynamicFuture(b)) => a.is_equal(b),
38 (Self::Plaintext(..), _)
39 | (Self::Record(..), _)
40 | (Self::Future(..), _)
41 | (Self::DynamicRecord(..), _)
42 | (Self::DynamicFuture(..), _) => Boolean::new(false),
43 }
44 }
45
46 fn is_not_equal(&self, other: &Self) -> Self::Output {
48 match (self, other) {
49 (Self::Plaintext(a), Self::Plaintext(b)) => a.is_not_equal(b),
50 (Self::Record(a), Self::Record(b)) => a.is_not_equal(b),
51 (Self::Future(a), Self::Future(b)) => a.is_not_equal(b),
52 (Self::DynamicRecord(a), Self::DynamicRecord(b)) => a.is_not_equal(b),
53 (Self::DynamicFuture(a), Self::DynamicFuture(b)) => a.is_not_equal(b),
54 (Self::Plaintext(..), _)
55 | (Self::Record(..), _)
56 | (Self::Future(..), _)
57 | (Self::DynamicRecord(..), _)
58 | (Self::DynamicFuture(..), _) => Boolean::new(true),
59 }
60 }
61}