pub struct OneOf<A, B, C = Disable, D = Disable>(/* private fields */)
where
A: PredicateOp + 'static,
B: PredicateOp + 'static,
C: PredicateOp + 'static,
D: PredicateOp + 'static;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, B, C, D> Clone for OneOf<A, B, C, D>where
A: Clone + PredicateOp + 'static,
B: Clone + PredicateOp + 'static,
C: Clone + PredicateOp + 'static,
D: Clone + PredicateOp + 'static,
impl<A, B, C, D> Clone for OneOf<A, B, C, D>where
A: Clone + PredicateOp + 'static,
B: Clone + PredicateOp + 'static,
C: Clone + PredicateOp + 'static,
D: Clone + PredicateOp + 'static,
Source§impl<A, B, C, D> Debug for OneOf<A, B, C, D>where
A: Debug + PredicateOp + 'static,
B: Debug + PredicateOp + 'static,
C: Debug + PredicateOp + 'static,
D: Debug + PredicateOp + 'static,
impl<A, B, C, D> Debug for OneOf<A, B, C, D>where
A: Debug + PredicateOp + 'static,
B: Debug + PredicateOp + 'static,
C: Debug + PredicateOp + 'static,
D: Debug + PredicateOp + 'static,
Source§impl<A, B, C, D> Parser for OneOf<A, B, C, D>
impl<A, B, C, D> Parser for OneOf<A, B, C, D>
Source§fn parser(tokens: &mut TokenIter) -> Result<OneOf<A, B, C, D>, Error>
fn parser(tokens: &mut TokenIter) -> Result<OneOf<A, B, C, D>, Error>
The actual parsing function that must be implemented. This mutates the
tokens
iterator directly. It should not be called from user code except for implementing
parsers itself and then only when the rules below are followed. Read moreSource§impl<A, B, C, D> ToTokens for OneOf<A, B, C, D>
impl<A, B, C, D> 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, B, C, D> 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, Error>
fn parse(tokens: &mut TokenIter) -> Result<Self, Error>
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