pub struct FormatConstraint { /* private fields */ }Expand description
A unified constraint that validates data formats and patterns.
This constraint replaces individual format constraints (PatternConstraint, EmailConstraint, UrlConstraint, CreditCardConstraint) and adds support for many additional formats.
§Examples
use term_guard::constraints::{FormatConstraint, FormatType, FormatOptions};
use term_guard::core::Constraint;
// Email validation
let email_constraint = FormatConstraint::new(
"email",
FormatType::Email,
0.95,
FormatOptions::default()
).unwrap();
// Phone number validation for US
let phone_constraint = FormatConstraint::new(
"phone",
FormatType::Phone { country: Some("US".to_string()) },
0.90,
FormatOptions::new().trim_before_check(true)
).unwrap();
// Custom regex pattern
let code_constraint = FormatConstraint::new(
"product_code",
FormatType::Regex(r"^[A-Z]{2}\d{4}$".to_string()),
1.0,
FormatOptions::default()
).unwrap();Implementations§
Source§impl FormatConstraint
impl FormatConstraint
Sourcepub fn new(
column: impl Into<String>,
format: FormatType,
threshold: f64,
options: FormatOptions,
) -> Result<Self>
pub fn new( column: impl Into<String>, format: FormatType, threshold: f64, options: FormatOptions, ) -> Result<Self>
Sourcepub fn email(column: impl Into<String>, threshold: f64) -> Result<Self>
pub fn email(column: impl Into<String>, threshold: f64) -> Result<Self>
Creates a format constraint for email validation.
Sourcepub fn url(
column: impl Into<String>,
threshold: f64,
allow_localhost: bool,
) -> Result<Self>
pub fn url( column: impl Into<String>, threshold: f64, allow_localhost: bool, ) -> Result<Self>
Creates a format constraint for URL validation.
Sourcepub fn credit_card(
column: impl Into<String>,
threshold: f64,
detect_only: bool,
) -> Result<Self>
pub fn credit_card( column: impl Into<String>, threshold: f64, detect_only: bool, ) -> Result<Self>
Creates a format constraint for credit card detection.
Sourcepub fn phone(
column: impl Into<String>,
threshold: f64,
country: Option<String>,
) -> Result<Self>
pub fn phone( column: impl Into<String>, threshold: f64, country: Option<String>, ) -> Result<Self>
Creates a format constraint for phone number validation.
Sourcepub fn postal_code(
column: impl Into<String>,
threshold: f64,
country: impl Into<String>,
) -> Result<Self>
pub fn postal_code( column: impl Into<String>, threshold: f64, country: impl Into<String>, ) -> Result<Self>
Creates a format constraint for postal code validation.
Sourcepub fn uuid(column: impl Into<String>, threshold: f64) -> Result<Self>
pub fn uuid(column: impl Into<String>, threshold: f64) -> Result<Self>
Creates a format constraint for UUID validation.
Sourcepub fn ipv4(column: impl Into<String>, threshold: f64) -> Result<Self>
pub fn ipv4(column: impl Into<String>, threshold: f64) -> Result<Self>
Creates a format constraint for IPv4 address validation.
Sourcepub fn ipv6(column: impl Into<String>, threshold: f64) -> Result<Self>
pub fn ipv6(column: impl Into<String>, threshold: f64) -> Result<Self>
Creates a format constraint for IPv6 address validation.
Sourcepub fn json(column: impl Into<String>, threshold: f64) -> Result<Self>
pub fn json(column: impl Into<String>, threshold: f64) -> Result<Self>
Creates a format constraint for JSON validation.
Sourcepub fn iso8601_datetime(
column: impl Into<String>,
threshold: f64,
) -> Result<Self>
pub fn iso8601_datetime( column: impl Into<String>, threshold: f64, ) -> Result<Self>
Creates a format constraint for ISO 8601 date-time validation.
Sourcepub fn regex(
column: impl Into<String>,
pattern: impl Into<String>,
threshold: f64,
) -> Result<Self>
pub fn regex( column: impl Into<String>, pattern: impl Into<String>, threshold: f64, ) -> Result<Self>
Creates a format constraint for custom regex pattern validation.
Creates a format constraint for Social Security Number pattern detection.
This method checks for SSN patterns (XXX-XX-XXXX or XXXXXXXXX) and excludes known invalid SSNs such as those starting with 000, 666, or 900-999.
§Arguments
column- The column to check for SSN patternsthreshold- The minimum ratio of values that must match the SSN pattern (0.0 to 1.0)
§Examples
use term_guard::constraints::FormatConstraint;
// Check that at least 95% of values are valid SSN patterns
let ssn_check = FormatConstraint::social_security_number("ssn", 0.95)?;
// For PII detection - flag if more than 1% contain SSN patterns
let ssn_detection = FormatConstraint::social_security_number("description", 0.01)?;Trait Implementations§
Source§impl Clone for FormatConstraint
impl Clone for FormatConstraint
Source§fn clone(&self) -> FormatConstraint
fn clone(&self) -> FormatConstraint
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Constraint for FormatConstraint
impl Constraint for FormatConstraint
Source§fn evaluate<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = Result<ConstraintResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn evaluate<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = Result<ConstraintResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn column(&self) -> Option<&str>
fn column(&self) -> Option<&str>
Source§fn metadata(&self) -> ConstraintMetadata
fn metadata(&self) -> ConstraintMetadata
Auto Trait Implementations§
impl Freeze for FormatConstraint
impl RefUnwindSafe for FormatConstraint
impl Send for FormatConstraint
impl Sync for FormatConstraint
impl Unpin for FormatConstraint
impl UnwindSafe for FormatConstraint
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more