Enum pica_record::matcher::field::FieldMatcher
source · pub enum FieldMatcher {
Singleton(SingletonMatcher),
Cardinality(CardinalityMatcher),
Group(Box<FieldMatcher>),
Not(Box<FieldMatcher>),
Composite {
lhs: Box<FieldMatcher>,
op: BooleanOp,
rhs: Box<FieldMatcher>,
},
}
Expand description
A matcher that allows grouping, negation and connecting of SingletonMatcher.
Variants§
Singleton(SingletonMatcher)
Cardinality(CardinalityMatcher)
Group(Box<FieldMatcher>)
Not(Box<FieldMatcher>)
Composite
Implementations§
source§impl FieldMatcher
impl FieldMatcher
sourcepub fn new(matcher: &str) -> Result<Self, ParseMatcherError>
pub fn new(matcher: &str) -> Result<Self, ParseMatcherError>
Creates a new FieldMatcher.
§Errors
This function fails if the given expression is not a valid field matcher.
§Example
use pica_record::matcher::field::FieldMatcher;
let _matcher = FieldMatcher::new("#003@ > 1")?;
let _matcher = FieldMatcher::new("010@.a == 'ger'")?;
let _matcher = FieldMatcher::new("(010@.a == 'ger')")?;
sourcepub fn is_match<'a>(
&self,
fields: impl IntoIterator<Item = &'a FieldRef<'a>> + Clone,
options: &MatcherOptions,
) -> bool
pub fn is_match<'a>( &self, fields: impl IntoIterator<Item = &'a FieldRef<'a>> + Clone, options: &MatcherOptions, ) -> bool
Returns true
if the given field(s) matches against the field
matcher.
§Example
use pica_record::matcher::field::FieldMatcher;
use pica_record::matcher::MatcherOptions;
use pica_record::primitives::FieldRef;
let field =
FieldRef::new("003@", None, vec![('0', "0123456789X")])?;
let options = MatcherOptions::default();
let matcher = FieldMatcher::new("#003@ == 1")?;
assert!(matcher.is_match(&field, &options));
Trait Implementations§
source§impl BitAnd for FieldMatcher
impl BitAnd for FieldMatcher
source§fn bitand(self, rhs: Self) -> Self::Output
fn bitand(self, rhs: Self) -> Self::Output
The bitwise AND operator &
of two FieldMatcher.
§Example
use pica_record::prelude::*;
use pica_record::primitives::FieldRef;
let options = MatcherOptions::default();
let field =
FieldRef::new("012A", None, vec![('a', "A"), ('b', "B")])?;
let lhs = FieldMatcher::new("012A.a == 'A'")?;
let rhs = FieldMatcher::new("012A.b == 'B'")?;
let matcher = lhs & rhs;
assert!(matcher.is_match(&field, &options));
source§type Output = FieldMatcher
type Output = FieldMatcher
The resulting type after applying the
&
operator.source§impl BitAndAssign for FieldMatcher
impl BitAndAssign for FieldMatcher
source§fn bitand_assign(&mut self, rhs: Self)
fn bitand_assign(&mut self, rhs: Self)
The bitwise AND assignment operator &=
of two FieldMatcher.
§Example
use pica_record::prelude::*;
use pica_record::primitives::FieldRef;
let options = MatcherOptions::default();
let field =
FieldRef::new("012A", None, vec![('a', "A"), ('b', "B")])?;
let mut matcher = FieldMatcher::new("012A.a == 'A'")?;
matcher &= FieldMatcher::new("012A.b == 'B'")?;
assert!(matcher.is_match(&field, &options));
source§impl BitOr for FieldMatcher
impl BitOr for FieldMatcher
source§fn bitor(self, rhs: Self) -> Self::Output
fn bitor(self, rhs: Self) -> Self::Output
The bitwise OR operator |
of two FieldMatcher.
§Example
use pica_record::prelude::*;
use pica_record::primitives::FieldRef;
let options = MatcherOptions::default();
let field =
FieldRef::new("012A", None, vec![('a', "A"), ('b', "B")])?;
let lhs = FieldMatcher::new("012A.a == 'X'")?;
let rhs = FieldMatcher::new("012A.b == 'B'")?;
let matcher = lhs | rhs;
assert!(matcher.is_match(&field, &options));
source§type Output = FieldMatcher
type Output = FieldMatcher
The resulting type after applying the
|
operator.source§impl BitOrAssign for FieldMatcher
impl BitOrAssign for FieldMatcher
source§fn bitor_assign(&mut self, rhs: Self)
fn bitor_assign(&mut self, rhs: Self)
The bitwise OR assignment operator |=
of two FieldMatcher.
§Example
use pica_record::prelude::*;
use pica_record::primitives::FieldRef;
let options = MatcherOptions::default();
let field =
FieldRef::new("012A", None, vec![('a', "A"), ('b', "B")])?;
let mut matcher = FieldMatcher::new("012A.a == 'X'")?;
matcher |= FieldMatcher::new("012A.b == 'B'")?;
assert!(matcher.is_match(&field, &options));
source§impl BitXor for FieldMatcher
impl BitXor for FieldMatcher
source§fn bitxor(self, rhs: Self) -> Self::Output
fn bitxor(self, rhs: Self) -> Self::Output
The bitwise XOR operator ^
of two FieldMatcher.
§Example
use pica_record::prelude::*;
use pica_record::primitives::FieldRef;
let options = MatcherOptions::default();
let field =
FieldRef::new("012A", None, vec![('a', "A"), ('b', "B")])?;
let lhs = FieldMatcher::new("012A.a == 'X'")?;
let rhs = FieldMatcher::new("012A.b == 'B'")?;
let matcher = lhs ^ rhs;
assert!(matcher.is_match(&field, &options));
source§type Output = FieldMatcher
type Output = FieldMatcher
The resulting type after applying the
^
operator.source§impl BitXorAssign for FieldMatcher
impl BitXorAssign for FieldMatcher
source§fn bitxor_assign(&mut self, rhs: Self)
fn bitxor_assign(&mut self, rhs: Self)
The bitwise XOR assignment operator ^=
of two FieldMatcher.
§Example
use pica_record::prelude::*;
use pica_record::primitives::FieldRef;
let options = MatcherOptions::default();
let field =
FieldRef::new("012A", None, vec![('a', "A"), ('b', "B")])?;
let mut matcher = FieldMatcher::new("012A.a == 'X'")?;
matcher ^= FieldMatcher::new("012A.b == 'B'")?;
assert!(matcher.is_match(&field, &options));
source§impl Clone for FieldMatcher
impl Clone for FieldMatcher
source§fn clone(&self) -> FieldMatcher
fn clone(&self) -> FieldMatcher
Returns a copy 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 Debug for FieldMatcher
impl Debug for FieldMatcher
source§impl Display for FieldMatcher
impl Display for FieldMatcher
source§fn fmt(&self, f: &mut Formatter<'_>) -> Result
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Format the subfield-matcher as a human-readable string.
§Example
use pica_record::matcher::field::FieldMatcher;
let matcher = FieldMatcher::new("#012A > 3")?;
assert_eq!(matcher.to_string(), "#012A > 3");
let mut matcher =
FieldMatcher::new("012A.a == 'foo' || 012A.a == 'bar'")?;
matcher &= FieldMatcher::new("012A.c == 'baz'")?;
assert_eq!(
matcher.to_string(),
"(012A.a == 'foo' || 012A.a == 'bar') && 012A.c == 'baz'"
);
source§impl Not for FieldMatcher
impl Not for FieldMatcher
source§fn not(self) -> Self::Output
fn not(self) -> Self::Output
The unary logical negation operator !
applied to a
FieldMatcher.
§Example
use pica_record::prelude::*;
use pica_record::primitives::FieldRef;
let options = MatcherOptions::default();
let field =
FieldRef::new("012A", None, vec![('a', "A"), ('b', "B")])?;
let matcher = FieldMatcher::new("012A.a == 'X'")?;
let matcher = !matcher;
assert!(matcher.is_match(&field, &options));
source§type Output = FieldMatcher
type Output = FieldMatcher
The resulting type after applying the
!
operator.source§impl PartialEq for FieldMatcher
impl PartialEq for FieldMatcher
impl StructuralPartialEq for FieldMatcher
Auto Trait Implementations§
impl Freeze for FieldMatcher
impl RefUnwindSafe for FieldMatcher
impl Send for FieldMatcher
impl Sync for FieldMatcher
impl Unpin for FieldMatcher
impl UnwindSafe for FieldMatcher
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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)