named_item/
name_validator.rs1crate::ix!();
2
3pub trait ValidateName {
5 fn validate_name(&self,name: &str) -> Result<(), NameError>;
7}
8
9pub struct NameValidator {
11 pattern: Regex,
12}
13
14impl NameValidator {
15 pub fn new(pattern: &str) -> Result<Self, regex::Error> {
17 Ok(Self {
18 pattern: Regex::new(pattern)?,
19 })
20 }
21}
22
23impl ValidateName for NameValidator {
24 fn validate_name(&self, name: &str) -> Result<(), NameError> {
25 if self.pattern.is_match(name) {
26 Ok(())
27 } else {
28 Err(NameError::InvalidName(name.to_string()))
29 }
30 }
31}