pub struct OneOf<A: PredicateOp + 'static, B: PredicateOp + 'static, C: PredicateOp + 'static = Disable, D: PredicateOp + 'static = Disable>(/* private fields */);Expand description
Logical XOR: exactly one of 2-4 predicates must succeed.
C and D default to Disable.
§Examples
use unsynn::*;
let mut tokens = "".to_token_iter();
// Two predicates
assert!(OneOf::<Enable, Disable>::parse(&mut tokens).is_ok());
assert!(OneOf::<Enable, Enable>::parse(&mut tokens).is_err());
// Four predicates
assert!(OneOf::<Enable, Disable, Disable, Disable>::parse(&mut tokens).is_ok());
assert!(OneOf::<Enable, Enable, Disable, Disable>::parse(&mut tokens).is_err());Trait Implementations§
Source§impl<A: Clone + PredicateOp + 'static, B: Clone + PredicateOp + 'static, C: Clone + PredicateOp + 'static, D: Clone + PredicateOp + 'static> Clone for OneOf<A, B, C, D>
impl<A: Clone + PredicateOp + 'static, B: Clone + PredicateOp + 'static, C: Clone + PredicateOp + 'static, D: Clone + PredicateOp + 'static> Clone for OneOf<A, B, C, D>
Source§impl<A: Debug + PredicateOp + 'static, B: Debug + PredicateOp + 'static, C: Debug + PredicateOp + 'static, D: Debug + PredicateOp + 'static> Debug for OneOf<A, B, C, D>
impl<A: Debug + PredicateOp + 'static, B: Debug + PredicateOp + 'static, C: Debug + PredicateOp + 'static, D: Debug + PredicateOp + 'static> Debug for OneOf<A, B, C, D>
Source§impl<A: PredicateOp, B: PredicateOp, C: PredicateOp, D: PredicateOp> Default for OneOf<A, B, C, D>
impl<A: PredicateOp, B: PredicateOp, C: PredicateOp, D: PredicateOp> Default for OneOf<A, B, C, D>
Source§impl<A: PredicateOp, B: PredicateOp, C: PredicateOp, D: PredicateOp> Parser for OneOf<A, B, C, D>
impl<A: PredicateOp, B: PredicateOp, C: PredicateOp, D: PredicateOp> Parser for OneOf<A, B, C, D>
Source§impl<A: PredicateOp, B: PredicateOp, C: PredicateOp, D: PredicateOp> ToTokens for OneOf<A, B, C, D>
impl<A: PredicateOp, B: PredicateOp, C: PredicateOp, D: PredicateOp> ToTokens for OneOf<A, B, C, D>
Source§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
Source§fn into_token_iter(self) -> TokenIter ⓘwhere
Self: Sized,
fn into_token_iter(self) -> TokenIter ⓘwhere
Self: Sized,
Convert
self into a TokenIter object.Source§fn to_token_stream(&self) -> TokenStream
fn to_token_stream(&self) -> TokenStream
Convert
&self into a TokenStream object.Source§fn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
fn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
Convert
self into a TokenStream object.impl<A: PredicateOp, B: PredicateOp, C: PredicateOp, D: PredicateOp> PredicateOp for OneOf<A, B, C, D>
Auto Trait Implementations§
impl<A, B, C, D> Freeze for OneOf<A, B, C, D>
impl<A, B, C, D> RefUnwindSafe for OneOf<A, B, C, D>
impl<A, B, C, D> Send for OneOf<A, B, C, D>
impl<A, B, C, D> Sync for OneOf<A, B, C, D>
impl<A, B, C, D> Unpin for OneOf<A, B, C, D>
impl<A, B, C, D> UnwindSafe for OneOf<A, B, C, D>
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> DynamicTokens for T
impl<T> DynamicTokens for T
Source§impl<T> Parse for Twhere
T: Parser,
impl<T> Parse for Twhere
T: Parser,
Source§fn parse(tokens: &mut TokenIter) -> Result<Self>
fn parse(tokens: &mut TokenIter) -> Result<Self>
This is the user facing API to parse grammatical entities. Calls a
parser() within a
transaction. Commits changes on success and returns the parsed value. Read more