named_item/
name_validator.rs

1crate::ix!();
2
3/// Trait for validating a name, returning a `Result`.
4pub trait ValidateName {
5    /// Validates a name and returns a Result indicating success or failure.
6    fn validate_name(&self,name: &str) -> Result<(), NameError>;
7}
8
9/// Validator struct to validate names using a regular expression.
10pub struct NameValidator {
11    pattern: Regex,
12}
13
14impl NameValidator {
15    /// Creates a new `NameValidator` with a regex pattern.
16    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}