#[repr(transparent)]pub struct Disj<L: ValidateString, R: ValidateString> { /* private fields */ }
Expand description
Require either rule to pass, from left to right.
If the left one throws an error but the right one doesn’t, discard the left error.
See also:
Example
use validus::prelude::*;
type Card1 = StringExactSizeRule<16>;
type Card2 = StringExactSizeRule<7>;
// Either card number is valid.
pub type CardRule = Disj<Card1, Card2>;
// 17 digits is too long for both rules.
let bad1 = "12345678901234567".validate::<CardRule>();
assert!(bad1.is_err());
// 16 digits is valid for the first rule.
let good1 = "1234567890123456".validate::<CardRule>();
assert!(good1.is_ok());
// 7 digits is valid for the second rule.
let good2 = "1234567".validate::<CardRule>();
assert!(good2.is_ok());
// but 8 digits is not accepted by either.
let bad2 = "12345678".validate::<CardRule>();
assert!(bad2.is_err());
Trait Implementations§
source§impl<L: Clone + ValidateString, R: Clone + ValidateString> Clone for Disj<L, R>
impl<L: Clone + ValidateString, R: Clone + ValidateString> Clone for Disj<L, R>
source§impl<L: Debug + ValidateString, R: Debug + ValidateString> Debug for Disj<L, R>
impl<L: Debug + ValidateString, R: Debug + ValidateString> Debug for Disj<L, R>
source§impl<L: Default + ValidateString, R: Default + ValidateString> Default for Disj<L, R>
impl<L: Default + ValidateString, R: Default + ValidateString> Default for Disj<L, R>
source§impl<L: Hash + ValidateString, R: Hash + ValidateString> Hash for Disj<L, R>
impl<L: Hash + ValidateString, R: Hash + ValidateString> Hash for Disj<L, R>
source§impl<L: Ord + ValidateString, R: Ord + ValidateString> Ord for Disj<L, R>
impl<L: Ord + ValidateString, R: Ord + ValidateString> Ord for Disj<L, R>
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
Compares and returns the maximum of two values. Read more
source§impl<L: PartialEq + ValidateString, R: PartialEq + ValidateString> PartialEq<Disj<L, R>> for Disj<L, R>
impl<L: PartialEq + ValidateString, R: PartialEq + ValidateString> PartialEq<Disj<L, R>> for Disj<L, R>
source§impl<L: PartialOrd + ValidateString, R: PartialOrd + ValidateString> PartialOrd<Disj<L, R>> for Disj<L, R>
impl<L: PartialOrd + ValidateString, R: PartialOrd + ValidateString> PartialOrd<Disj<L, R>> for Disj<L, R>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl<L: ValidateString, R: ValidateString> ValidateString for Disj<L, R>
impl<L: ValidateString, R: ValidateString> ValidateString for Disj<L, R>
§type Error = BothError<<L as ValidateString>::Error, <R as ValidateString>::Error>
type Error = BothError<<L as ValidateString>::Error, <R as ValidateString>::Error>
Explain why the string slice is invalid. Read more
impl<L: Copy + ValidateString, R: Copy + ValidateString> Copy for Disj<L, R>
impl<L: Eq + ValidateString, R: Eq + ValidateString> Eq for Disj<L, R>
impl<L: ValidateString, R: ValidateString> StructuralEq for Disj<L, R>
impl<L: ValidateString, R: ValidateString> StructuralPartialEq for Disj<L, R>
Auto Trait Implementations§
impl<L, R> RefUnwindSafe for Disj<L, R>where L: RefUnwindSafe, R: RefUnwindSafe,
impl<L, R> Send for Disj<L, R>
impl<L, R> Sync for Disj<L, R>
impl<L, R> Unpin for Disj<L, R>
impl<L, R> UnwindSafe for Disj<L, R>where L: UnwindSafe, R: UnwindSafe,
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