• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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