1 use crate::Value; 2 3 impl PartialEq<str> for Value { 4 /// Compare `str` with YAML value 5 /// 6 /// # Examples 7 /// 8 /// ``` 9 /// # use serde_yaml::Value; 10 /// assert!(Value::String("lorem".into()) == *"lorem"); 11 /// ``` eq(&self, other: &str) -> bool12 fn eq(&self, other: &str) -> bool { 13 self.as_str().map_or(false, |s| s == other) 14 } 15 } 16 17 impl<'a> PartialEq<&'a str> for Value { 18 /// Compare `&str` with YAML value 19 /// 20 /// # Examples 21 /// 22 /// ``` 23 /// # use serde_yaml::Value; 24 /// assert!(Value::String("lorem".into()) == "lorem"); 25 /// ``` eq(&self, other: &&str) -> bool26 fn eq(&self, other: &&str) -> bool { 27 self.as_str().map_or(false, |s| s == *other) 28 } 29 } 30 31 impl PartialEq<String> for Value { 32 /// Compare YAML value with String 33 /// 34 /// # Examples 35 /// 36 /// ``` 37 /// # use serde_yaml::Value; 38 /// assert!(Value::String("lorem".into()) == "lorem".to_string()); 39 /// ``` eq(&self, other: &String) -> bool40 fn eq(&self, other: &String) -> bool { 41 self.as_str().map_or(false, |s| s == other) 42 } 43 } 44 45 impl PartialEq<bool> for Value { 46 /// Compare YAML value with bool 47 /// 48 /// # Examples 49 /// 50 /// ``` 51 /// # use serde_yaml::Value; 52 /// assert!(Value::Bool(true) == true); 53 /// ``` eq(&self, other: &bool) -> bool54 fn eq(&self, other: &bool) -> bool { 55 self.as_bool().map_or(false, |b| b == *other) 56 } 57 } 58 59 macro_rules! partialeq_numeric { 60 ($([$($ty:ty)*], $conversion:ident, $base:ty)*) => { 61 $($( 62 impl PartialEq<$ty> for Value { 63 fn eq(&self, other: &$ty) -> bool { 64 self.$conversion().map_or(false, |i| i == (*other as $base)) 65 } 66 } 67 68 impl<'a> PartialEq<$ty> for &'a Value { 69 fn eq(&self, other: &$ty) -> bool { 70 self.$conversion().map_or(false, |i| i == (*other as $base)) 71 } 72 } 73 74 impl<'a> PartialEq<$ty> for &'a mut Value { 75 fn eq(&self, other: &$ty) -> bool { 76 self.$conversion().map_or(false, |i| i == (*other as $base)) 77 } 78 } 79 )*)* 80 } 81 } 82 83 partialeq_numeric! { 84 [i8 i16 i32 i64 isize], as_i64, i64 85 [u8 u16 u32 u64 usize], as_u64, u64 86 [f32 f64], as_f64, f64 87 } 88