use crate::{design::prelude::*, traits::Validator};
#[validator]
pub struct E164PhoneNumber;
impl Validator<str> for E164PhoneNumber {
fn validate(&self, s: &str, ctx: &mut dyn VisitorContext) {
if !s.starts_with('+') {
ctx.issue(Issue::PhoneMissingPlus);
return;
}
let digits = s.chars().filter(char::is_ascii_digit).count();
if !(7..=15).contains(&digits) {
ctx.issue(Issue::PhoneDigitCount { digits });
}
}
}