1 use super::Value;
2 use alloc::string::String;
3
eq_i64(value: &Value, other: i64) -> bool4 fn eq_i64(value: &Value, other: i64) -> bool {
5 value.as_i64() == Some(other)
6 }
7
eq_u64(value: &Value, other: u64) -> bool8 fn eq_u64(value: &Value, other: u64) -> bool {
9 value.as_u64() == Some(other)
10 }
11
eq_f32(value: &Value, other: f32) -> bool12 fn eq_f32(value: &Value, other: f32) -> bool {
13 match value {
14 Value::Number(n) => n.as_f32() == Some(other),
15 _ => false,
16 }
17 }
18
eq_f64(value: &Value, other: f64) -> bool19 fn eq_f64(value: &Value, other: f64) -> bool {
20 value.as_f64() == Some(other)
21 }
22
eq_bool(value: &Value, other: bool) -> bool23 fn eq_bool(value: &Value, other: bool) -> bool {
24 value.as_bool() == Some(other)
25 }
26
eq_str(value: &Value, other: &str) -> bool27 fn eq_str(value: &Value, other: &str) -> bool {
28 value.as_str() == Some(other)
29 }
30
31 impl PartialEq<str> for Value {
eq(&self, other: &str) -> bool32 fn eq(&self, other: &str) -> bool {
33 eq_str(self, other)
34 }
35 }
36
37 impl PartialEq<&str> for Value {
eq(&self, other: &&str) -> bool38 fn eq(&self, other: &&str) -> bool {
39 eq_str(self, *other)
40 }
41 }
42
43 impl PartialEq<Value> for str {
eq(&self, other: &Value) -> bool44 fn eq(&self, other: &Value) -> bool {
45 eq_str(other, self)
46 }
47 }
48
49 impl PartialEq<Value> for &str {
eq(&self, other: &Value) -> bool50 fn eq(&self, other: &Value) -> bool {
51 eq_str(other, *self)
52 }
53 }
54
55 impl PartialEq<String> for Value {
eq(&self, other: &String) -> bool56 fn eq(&self, other: &String) -> bool {
57 eq_str(self, other.as_str())
58 }
59 }
60
61 impl PartialEq<Value> for String {
eq(&self, other: &Value) -> bool62 fn eq(&self, other: &Value) -> bool {
63 eq_str(other, self.as_str())
64 }
65 }
66
67 macro_rules! partialeq_numeric {
68 ($($eq:ident [$($ty:ty)*])*) => {
69 $($(
70 impl PartialEq<$ty> for Value {
71 fn eq(&self, other: &$ty) -> bool {
72 $eq(self, *other as _)
73 }
74 }
75
76 impl PartialEq<Value> for $ty {
77 fn eq(&self, other: &Value) -> bool {
78 $eq(other, *self as _)
79 }
80 }
81
82 impl<'a> PartialEq<$ty> for &'a Value {
83 fn eq(&self, other: &$ty) -> bool {
84 $eq(*self, *other as _)
85 }
86 }
87
88 impl<'a> PartialEq<$ty> for &'a mut Value {
89 fn eq(&self, other: &$ty) -> bool {
90 $eq(*self, *other as _)
91 }
92 }
93 )*)*
94 }
95 }
96
97 partialeq_numeric! {
98 eq_i64[i8 i16 i32 i64 isize]
99 eq_u64[u8 u16 u32 u64 usize]
100 eq_f32[f32]
101 eq_f64[f64]
102 eq_bool[bool]
103 }
104