Error

Struct Error 

Source
pub struct Error {
    pub kind: ErrorKind,
    /* private fields */
}
Expand description

Error type for parsing.

Fields§

§kind: ErrorKind

Kind of the error.

Implementations§

Source§

impl Error

Source

pub const fn no_error() -> Error

Create a ErrorKind::NoError error.

Source

pub fn upgrade<T>(&mut self, r: Result<T, Error>) -> Result<T, Error>

Upgrade an error to one with greater pos value.

Source

pub fn set_pos(&mut self, pos: impl TokenCount)

Set the position of the error.

Sometimes the position of the error is not known at the time of creation. This allows to adjust it later.

Source

pub const fn pos(&self) -> usize

Get the position of the error.

Source

pub fn unexpected_token<T>( at: Option<TokenTree>, after: &TokenIter, ) -> Result<T, Error>

Create a Result<T>::Err(Error{ kind: ErrorKind::UnexpectedToken }) error at a token iter position. Takes the failed token (if available) and a reference to the TokenIter past the error.

§Note on position tracking

The pos field is set to after.counter(), which represents the number of tokens that were consumed up to and including the failed token (if any):

  • If at is Some(token): The token was consumed by next() which incremented the counter, so pos reflects the position AFTER consuming the failed token.
  • If at is None: The iterator was exhausted, so pos reflects how many tokens were successfully consumed before running out.
Source

pub fn unexpected_end<T>() -> Result<T, Error>

Create a Result<T>::Err(Error{ kind: ErrorKind::UnexpectedToken }) error without a token iter.

Source

pub fn out_of_range<const LIM: usize, T>( have: usize, at: Option<TokenTree>, after: &TokenIter, ) -> Result<T, Error>

Create a Result<T>::Err(Error{ kind: ErrorKind::OutOfRange }) error at a token iter position. Takes the failed token (if available) and a reference to the TokenIter past the error.

Source

pub fn other<T>( at: Option<TokenTree>, after: &TokenIter, reason: String, ) -> Result<T, Error>

Create a Result<T>::Err(Error{ kind: ErrorKind::Other }) error. Takes the failed token (if available), a reference to the TokenIter past the error and a String describing the error.

Source

pub fn infinite_loop<T>( at: Option<TokenTree>, after: &TokenIter, ) -> Result<T, Error>

Create a Result<T>::Err(Error{ kind: ErrorKind::InfiniteLoop }) error. Used when a repeating (conatianer) parser detects that the inner parser succeeded without consuming any tokens, which would lead to an infinite loop.

Source

pub fn dynamic<T>( at: Option<TokenTree>, after: &TokenIter, error: impl Error + Send + Sync + 'static, ) -> Result<T, Error>

Create a Result<T>::Err(Error{ kind: ErrorKind::Dynamic }) error. Takes the failed token (if available), a reference to the TokenIter past the error and a boxed error.

Source

pub fn expected_type_name(&self) -> &'static str

Returns the refined type name of the parser that failed.

Source

pub const fn expected_original_type_name(&self) -> &'static str

Returns the original/fundamental type name of the parser that failed.

Source

pub fn failed_at(&self) -> Option<TokenTree>

Returns a Option<TokenTree> where the error happend.

Source

pub fn tokens_after(&self) -> TokenIter

Returns a iterator to the tokens after the error

Creates a new TokenIter from the stored token stream position

Trait Implementations§

Source§

impl Clone for Error

Source§

fn clone(&self) -> Error

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 Debug for Error

Source§

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

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

impl Display for Error

Source§

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

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

impl Error for Error

1.30.0 · Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more

Auto Trait Implementations§

§

impl Freeze for Error

§

impl !RefUnwindSafe for Error

§

impl !Send for Error

§

impl !Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.