use super::Message;
use crate::{rule::string::StringRule, Rule, Value};
mod parse;
pub use parse::validate_email;
#[derive(Clone, Copy, Debug)]
pub struct Email;
const NAME: &str = "email";
impl Rule for Email {
type Message = Message;
const NAME: &'static str = NAME;
fn message(&self) -> Self::Message {
Message::new(super::MessageKind::Email)
}
fn call(&mut self, value: &mut Value) -> bool {
match value {
Value::String(s) => validate_email(s),
_ => false,
}
}
}
impl StringRule for Email {
type Message = Message;
const NAME: &'static str = NAME;
fn message(&self) -> Self::Message {
Message::new(super::MessageKind::Email)
}
fn call(&mut self, value: &mut String) -> bool {
validate_email(value)
}
}