diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/doc.rs | 26 | ||||
| -rw-r--r-- | src/util/mod.rs | 10 |
2 files changed, 36 insertions, 0 deletions
@@ -591,6 +591,12 @@ impl Region { } } +impl PartialEq<&str> for Region { + fn eq(&self, other: &&str) -> bool { + self.as_str() == *other + } +} + impl FromStr for Region { type Err = &'static str; @@ -688,3 +694,23 @@ cast_to_value! { "y" => Value::Length(v.point.y.into()), }) } + +#[cfg(test)] +mod tests { + use crate::{doc::Region, util::option_eq}; + + #[test] + fn test_partialeq_str() { + let region = Region([b'U', b'S']); + assert_eq!(region, "US"); + assert_ne!(region, "AB"); + } + + #[test] + fn test_region_option_eq() { + let region = Some(Region([b'U', b'S'])); + + assert!(option_eq(region, "US")); + assert!(!option_eq(region, "AB")); + } +} diff --git a/src/util/mod.rs b/src/util/mod.rs index 592ba1fa..83ec5961 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -226,3 +226,13 @@ pub fn pretty_array_like(parts: &[impl AsRef<str>], trailing_comma: bool) -> Str buf.push(')'); buf } + +/// Check if the [`Option`]-wrapped L is same to R. +/// +/// This is the stable version of [`Option::contains`]. +pub fn option_eq<L, R>(left: Option<L>, other: R) -> bool +where + L: PartialEq<R>, +{ + left.map(|v| v == other).unwrap_or(false) +} |
