Skip to main content

NonEmpty

Struct NonEmpty 

Source
pub struct NonEmpty<P>(pub P);
Expand description

Discards empty strings from a match.

Some atoms that needs to match an undefined number of other atoms (like Repeat or LazyRepeat) may enter in an infinite loop if the inner atom matches an empty string "". In that case there is always a match but the atom does not progress, resulting so in an endless cycle.

This tool takes another tool and converts any match with an empty string with a missing match, avoiding this issue.

Tuple Fields§

§0: P

Trait Implementations§

Source§

impl<P: Clone> Clone for NonEmpty<P>

Source§

fn clone(&self) -> NonEmpty<P>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<P: Debug> Debug for NonEmpty<P>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<P: Default> Default for NonEmpty<P>

Source§

fn default() -> NonEmpty<P>

Returns the “default value” for a type. Read more
Source§

impl<'a, P> Tool<'a> for NonEmpty<P>
where P: Tool<'a>,

Source§

type Data = <P as Tool<'a>>::Data

Associated data type.
Source§

type Error = Option<<P as Tool<'a>>::Error>

Error type.
Source§

fn parse( &self, st: View<'a>, ) -> Result<(Self::Data, usize, View<'a>), Self::Error>

The main parsing algorithm. Read more
Source§

impl<P: Copy> Copy for NonEmpty<P>

Auto Trait Implementations§

§

impl<P> Freeze for NonEmpty<P>
where P: Freeze,

§

impl<P> RefUnwindSafe for NonEmpty<P>
where P: RefUnwindSafe,

§

impl<P> Send for NonEmpty<P>
where P: Send,

§

impl<P> Sync for NonEmpty<P>
where P: Sync,

§

impl<P> Unpin for NonEmpty<P>
where P: Unpin,

§

impl<P> UnsafeUnpin for NonEmpty<P>
where P: UnsafeUnpin,

§

impl<P> UnwindSafe for NonEmpty<P>
where P: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.