Enum pica_record::matcher::subfield::SubfieldMatcher
source · pub enum SubfieldMatcher {
Singleton(SingletonMatcher),
Group(Box<SubfieldMatcher>),
Not(Box<SubfieldMatcher>),
Composite {
lhs: Box<SubfieldMatcher>,
op: BooleanOp,
rhs: Box<SubfieldMatcher>,
},
}
Expand description
A matcher that allows grouping, negation and connecting of singleton matcher.
Variants§
Implementations§
source§impl SubfieldMatcher
impl SubfieldMatcher
sourcepub fn new(matcher: &str) -> Result<Self, ParseMatcherError>
pub fn new(matcher: &str) -> Result<Self, ParseMatcherError>
Creates a new SubfieldMatcher.
§Errors
This function fails if the given expression is not a valid subfield-matcher.
§Example
use pica_record::matcher::subfield::SubfieldMatcher;
let _matcher = SubfieldMatcher::new("a == 'foo'")?;
sourcepub fn is_match<'a>(
&self,
subfields: impl IntoIterator<Item = &'a SubfieldRef<'a>> + Clone,
options: &MatcherOptions,
) -> bool
pub fn is_match<'a>( &self, subfields: impl IntoIterator<Item = &'a SubfieldRef<'a>> + Clone, options: &MatcherOptions, ) -> bool
Returns true
if the underlying matcher returns true
.
§Example
use pica_record::matcher::subfield::SubfieldMatcher;
use pica_record::matcher::MatcherOptions;
use pica_record::primitives::SubfieldRef;
let options = MatcherOptions::default();
let subfield = SubfieldRef::new('a', "foo")?;
let matcher = SubfieldMatcher::new("a =^ 'f' && (a =$ 'o')")?;
assert!(matcher.is_match(&subfield, &options));
Trait Implementations§
source§impl BitAnd for SubfieldMatcher
impl BitAnd for SubfieldMatcher
source§fn bitand(self, rhs: Self) -> Self::Output
fn bitand(self, rhs: Self) -> Self::Output
The bitwise AND operator &
of two SubfieldMatcher.
§Example
use pica_record::prelude::*;
use pica_record::primitives::SubfieldRef;
let options = MatcherOptions::default();
let subfield = SubfieldRef::new('a', "foobar")?;
let lhs = SubfieldMatcher::new("a =^ 'foo'")?;
let rhs = SubfieldMatcher::new("a =$ 'bar'")?;
let matcher = lhs & rhs;
assert!(matcher.is_match(&subfield, &options));
source§type Output = SubfieldMatcher
type Output = SubfieldMatcher
The resulting type after applying the
&
operator.source§impl BitAndAssign for SubfieldMatcher
impl BitAndAssign for SubfieldMatcher
source§fn bitand_assign(&mut self, rhs: Self)
fn bitand_assign(&mut self, rhs: Self)
The bitwise AND assignment operator &=
of two
SubfieldMatcher.
§Example
use pica_record::prelude::*;
use pica_record::primitives::SubfieldRef;
let options = MatcherOptions::default();
let subfield = SubfieldRef::new('a', "foobar")?;
let mut matcher = SubfieldMatcher::new("a =^ 'foo'")?;
matcher &= SubfieldMatcher::new("a =$ 'bar'")?;
assert!(matcher.is_match(&subfield, &options));
source§impl BitOr for SubfieldMatcher
impl BitOr for SubfieldMatcher
source§fn bitor(self, rhs: Self) -> Self::Output
fn bitor(self, rhs: Self) -> Self::Output
The bitwise OR operator |
of two SubfieldMatcher.
§Example
use pica_record::prelude::*;
use pica_record::primitives::SubfieldRef;
let options = MatcherOptions::default();
let subfield = SubfieldRef::new('a', "bar")?;
let lhs = SubfieldMatcher::new("a == 'foo'")?;
let rhs = SubfieldMatcher::new("a == 'bar'")?;
let matcher = lhs | rhs;
assert!(matcher.is_match(&subfield, &options));
source§type Output = SubfieldMatcher
type Output = SubfieldMatcher
The resulting type after applying the
|
operator.source§impl BitOrAssign for SubfieldMatcher
impl BitOrAssign for SubfieldMatcher
source§fn bitor_assign(&mut self, rhs: Self)
fn bitor_assign(&mut self, rhs: Self)
The bitwise OR assignment operator |=
of two
SubfieldMatcher.
§Example
use pica_record::prelude::*;
use pica_record::primitives::SubfieldRef;
let options = MatcherOptions::default();
let subfield = SubfieldRef::new('a', "foo")?;
let mut matcher = SubfieldMatcher::new("a == 'foo'")?;
matcher |= SubfieldMatcher::new("a == 'bar'")?;
assert!(matcher.is_match(&subfield, &options));
source§impl BitXor for SubfieldMatcher
impl BitXor for SubfieldMatcher
source§fn bitxor(self, rhs: Self) -> Self::Output
fn bitxor(self, rhs: Self) -> Self::Output
The bitwise XOR operator ^
of two SubfieldMatcher.
§Example
use pica_record::prelude::*;
use pica_record::primitives::SubfieldRef;
let options = MatcherOptions::default();
let subfield = SubfieldRef::new('a', "bar")?;
let lhs = SubfieldMatcher::new("a == 'foo'")?;
let rhs = SubfieldMatcher::new("a == 'bar'")?;
let matcher = lhs ^ rhs;
assert!(matcher.is_match(&subfield, &options));
source§type Output = SubfieldMatcher
type Output = SubfieldMatcher
The resulting type after applying the
^
operator.source§impl BitXorAssign for SubfieldMatcher
impl BitXorAssign for SubfieldMatcher
source§fn bitxor_assign(&mut self, rhs: Self)
fn bitxor_assign(&mut self, rhs: Self)
The bitwise XOR assignment operator ^=
of two
SubfieldMatcher.
§Example
use pica_record::prelude::*;
use pica_record::primitives::SubfieldRef;
let options = MatcherOptions::default();
let subfield = SubfieldRef::new('a', "foo")?;
let mut matcher = SubfieldMatcher::new("a == 'foo'")?;
matcher ^= SubfieldMatcher::new("a == 'bar'")?;
assert!(matcher.is_match(&subfield, &options));
source§impl Clone for SubfieldMatcher
impl Clone for SubfieldMatcher
source§fn clone(&self) -> SubfieldMatcher
fn clone(&self) -> SubfieldMatcher
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 SubfieldMatcher
impl Debug for SubfieldMatcher
source§impl Display for SubfieldMatcher
impl Display for SubfieldMatcher
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::subfield::SubfieldMatcher;
let matcher = SubfieldMatcher::new("#a >= 3")?;
assert_eq!(matcher.to_string(), "#a >= 3");
let mut matcher = SubfieldMatcher::new("a == 'foo' || a == 'bar'")?;
matcher &= SubfieldMatcher::new("c == 'baz'")?;
assert_eq!(
matcher.to_string(),
"(a == 'foo' || a == 'bar') && c == 'baz'"
);
let mut matcher = SubfieldMatcher::new("a == 'foo'")?;
matcher &= SubfieldMatcher::new("b == 'bar' ^ b == 'baz'")?;
assert_eq!(
matcher.to_string(),
"a == 'foo' && (b == 'bar' ^ b == 'baz')"
);
source§impl Not for SubfieldMatcher
impl Not for SubfieldMatcher
source§fn not(self) -> Self::Output
fn not(self) -> Self::Output
The unary logical negation operator !
applied to a
SubfieldMatcher.
§Example
use pica_record::prelude::*;
use pica_record::primitives::SubfieldRef;
let options = MatcherOptions::default();
let subfield = SubfieldRef::new('a', "foo")?;
let matcher = !SubfieldMatcher::new("a == 'bar'")?;
assert!(matcher.is_match(&subfield, &options));
let matcher = !SubfieldMatcher::new("a == 'foo'")?;
assert!(!matcher.is_match(&subfield, &options));
source§type Output = SubfieldMatcher
type Output = SubfieldMatcher
The resulting type after applying the
!
operator.source§impl PartialEq for SubfieldMatcher
impl PartialEq for SubfieldMatcher
impl StructuralPartialEq for SubfieldMatcher
Auto Trait Implementations§
impl Freeze for SubfieldMatcher
impl RefUnwindSafe for SubfieldMatcher
impl Send for SubfieldMatcher
impl Sync for SubfieldMatcher
impl Unpin for SubfieldMatcher
impl UnwindSafe for SubfieldMatcher
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
)