hamcrest2/matchers/
regex.rs1use regex::Regex;
10use std::borrow::Borrow;
11use std::fmt;
12
13use crate::core::*;
14
15pub struct MatchesRegex {
16  regex: Regex,
17}
18
19impl fmt::Display for MatchesRegex {
20  fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
21    self.regex.fmt(f)
22  }
23}
24
25impl<B: Borrow<str>> Matcher<B> for MatchesRegex {
26  fn matches(&self, actual: B) -> MatchResult {
27    if self.regex.is_match(actual.borrow()) {
28      success()
29    } else {
30      Err(format!("was {:?}", actual.borrow()))
31    }
32  }
33}
34
35pub fn matches_regex(regex: &str) -> MatchesRegex {
36  MatchesRegex {
37    regex: Regex::new(regex).unwrap(),
38  }
39}