email_syntax_verify_opt 0.1.0

Ultra-fast, zero-allocation email validation library optimized for enterprise production use
Documentation
use std::net::{Ipv4Addr, Ipv6Addr};

pub trait ValidateIp {
    fn validate_ip(&self) -> bool;
}

impl ValidateIp for str {
    #[inline]
    fn validate_ip(&self) -> bool {
        self.len() <= 45 && (self.parse::<Ipv4Addr>().is_ok() || self.parse::<Ipv6Addr>().is_ok())
    }
}

#[inline(always)]
pub fn is_valid_ipv4_char(byte: u8) -> bool {
    matches!(byte, b'0'..=b'9' | b'.')
}

#[inline(always)]
pub fn is_valid_ipv6_char(byte: u8) -> bool {
    matches!(byte, b'0'..=b'9' | b'a'..=b'f' | b'A'..=b'F' | b':')
}

pub fn fast_ip_precheck(bytes: &[u8]) -> bool {
    if bytes.is_empty() || bytes.len() > 45 {
        return false;
    }

    let has_colon = bytes.contains(&b':');
    let has_dot = bytes.contains(&b'.');

    if has_colon && has_dot {
        return bytes.iter().all(|&b| is_valid_ipv6_char(b) || b == b'.');
    } else if has_colon {
        return bytes.iter().all(|&b| is_valid_ipv6_char(b));
    } else if has_dot {
        return bytes.iter().all(|&b| is_valid_ipv4_char(b));
    }

    false
}