pub struct CompletenessConstraint { /* private fields */ }Expand description
A constraint that checks the completeness (non-null ratio) of one or more columns.
This constraint supports:
- Single column completeness checks
- Multiple column completeness with logical operators (All, Any, AtLeast, etc.)
- Configurable thresholds
- Flexible configuration through ConstraintOptions
§Examples
use term_guard::constraints::CompletenessConstraint;
use term_guard::core::LogicalOperator;
// Single column - 100% complete (equivalent to is_complete)
let constraint = CompletenessConstraint::complete("user_id");
// Single column with threshold (equivalent to has_completeness)
let constraint = CompletenessConstraint::with_threshold("email", 0.95);
// Multiple columns - all must be complete (equivalent to are_complete)
let constraint = CompletenessConstraint::with_operator(
vec!["first_name", "last_name"],
LogicalOperator::All,
1.0,
);
// Multiple columns - any must be complete (equivalent to are_any_complete)
let constraint = CompletenessConstraint::with_operator(
vec!["phone", "email", "address"],
LogicalOperator::Any,
1.0,
);
// New capability: At least 2 columns must be 90% complete
let constraint = CompletenessConstraint::with_operator(
vec!["email", "phone", "address", "postal_code"],
LogicalOperator::AtLeast(2),
0.9,
);Implementations§
Source§impl CompletenessConstraint
impl CompletenessConstraint
Sourcepub fn new(columns: impl Into<ColumnSpec>, options: ConstraintOptions) -> Self
pub fn new(columns: impl Into<ColumnSpec>, options: ConstraintOptions) -> Self
Sourcepub fn with_threshold(columns: impl Into<ColumnSpec>, threshold: f64) -> Self
pub fn with_threshold(columns: impl Into<ColumnSpec>, threshold: f64) -> Self
Creates a constraint with a specific threshold. Convenience method for the common case.
Sourcepub fn complete(columns: impl Into<ColumnSpec>) -> Self
pub fn complete(columns: impl Into<ColumnSpec>) -> Self
Creates a constraint requiring 100% completeness.
Convenience method equivalent to is_complete.
Sourcepub fn with_operator(
columns: impl Into<ColumnSpec>,
operator: LogicalOperator,
threshold: f64,
) -> Self
pub fn with_operator( columns: impl Into<ColumnSpec>, operator: LogicalOperator, threshold: f64, ) -> Self
Creates a constraint for multiple columns with a specific operator. Convenience method for multi-column checks.
Trait Implementations§
Source§impl Clone for CompletenessConstraint
impl Clone for CompletenessConstraint
Source§fn clone(&self) -> CompletenessConstraint
fn clone(&self) -> CompletenessConstraint
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Constraint for CompletenessConstraint
impl Constraint for CompletenessConstraint
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,
Evaluates the constraint against the data in the session context. Read more
Source§fn column(&self) -> Option<&str>
fn column(&self) -> Option<&str>
Returns the column this constraint operates on (if single-column). Read more
Source§fn metadata(&self) -> ConstraintMetadata
fn metadata(&self) -> ConstraintMetadata
Returns the metadata associated with this constraint. Read more
Source§impl Debug for CompletenessConstraint
impl Debug for CompletenessConstraint
Source§impl UnifiedConstraint for CompletenessConstraint
impl UnifiedConstraint for CompletenessConstraint
Source§fn column_spec(&self) -> &ColumnSpec
fn column_spec(&self) -> &ColumnSpec
Returns the column specification for this constraint.
Source§fn logical_operator(&self) -> Option<LogicalOperator>
fn logical_operator(&self) -> Option<LogicalOperator>
Returns the logical operator used for multi-column evaluation.
Source§fn evaluate_column<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
column: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<ConstraintResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn evaluate_column<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
column: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<ConstraintResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Evaluates the constraint for a single column. Read more
Source§fn evaluate_unified<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = Result<ConstraintResult>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn evaluate_unified<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = Result<ConstraintResult>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Default implementation of evaluate that handles multi-column logic.
Auto Trait Implementations§
impl Freeze for CompletenessConstraint
impl RefUnwindSafe for CompletenessConstraint
impl Send for CompletenessConstraint
impl Sync for CompletenessConstraint
impl Unpin for CompletenessConstraint
impl UnwindSafe for CompletenessConstraint
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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