pub struct LocatingSlice<I> { /* private fields */ }
Expand description
Allow collecting the span of a parsed token within a slice
Spans are tracked as a Range<usize>
of byte offsets.
Converting byte offsets to line or column numbers is left up to the user, as computing column numbers requires domain knowledge (are columns byte-based, codepoint-based, or grapheme-based?) and O(n) iteration over the input to determine codepoint and line boundaries.
The line-span
crate can help with converting
byte offsets to line numbers.
See Parser::span
and Parser::with_span
for more details
Implementations§
Source§impl<I> LocatingSlice<I>
impl<I> LocatingSlice<I>
Source§impl<I> LocatingSlice<I>
impl<I> LocatingSlice<I>
Sourcepub fn reset_to_start(&mut self)
pub fn reset_to_start(&mut self)
Reset the stream to the start
This is useful for formats that encode a graph with addresses relative to the start of the input.
Trait Implementations§
Source§impl<I> AsBStr for LocatingSlice<I>where
I: AsBStr,
impl<I> AsBStr for LocatingSlice<I>where
I: AsBStr,
Source§impl<I> AsBytes for LocatingSlice<I>where
I: AsBytes,
impl<I> AsBytes for LocatingSlice<I>where
I: AsBytes,
Source§impl<I> AsRef<I> for LocatingSlice<I>
impl<I> AsRef<I> for LocatingSlice<I>
Source§impl<I: Clone> Clone for LocatingSlice<I>
impl<I: Clone> Clone for LocatingSlice<I>
Source§fn clone(&self) -> LocatingSlice<I>
fn clone(&self) -> LocatingSlice<I>
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<I, U> Compare<U> for LocatingSlice<I>where
I: Compare<U>,
impl<I, U> Compare<U> for LocatingSlice<I>where
I: Compare<U>,
Source§fn compare(&self, other: U) -> CompareResult
fn compare(&self, other: U) -> CompareResult
Compares self to another value for equality
Source§impl<I: Debug> Debug for LocatingSlice<I>
impl<I: Debug> Debug for LocatingSlice<I>
Source§impl<I: Default> Default for LocatingSlice<I>
impl<I: Default> Default for LocatingSlice<I>
Source§fn default() -> LocatingSlice<I>
fn default() -> LocatingSlice<I>
Returns the “default value” for a type. Read more
Source§impl<I> Deref for LocatingSlice<I>
impl<I> Deref for LocatingSlice<I>
Source§impl<I: Display> Display for LocatingSlice<I>
impl<I: Display> Display for LocatingSlice<I>
Source§impl<I, T> FindSlice<T> for LocatingSlice<I>where
I: FindSlice<T>,
impl<I, T> FindSlice<T> for LocatingSlice<I>where
I: FindSlice<T>,
Source§impl<I> Location for LocatingSlice<I>
impl<I> Location for LocatingSlice<I>
Source§impl<I> Offset<<LocatingSlice<I> as Stream>::Checkpoint> for LocatingSlice<I>where
I: Stream,
impl<I> Offset<<LocatingSlice<I> as Stream>::Checkpoint> for LocatingSlice<I>where
I: Stream,
Source§fn offset_from(&self, other: &<LocatingSlice<I> as Stream>::Checkpoint) -> usize
fn offset_from(&self, other: &<LocatingSlice<I> as Stream>::Checkpoint) -> usize
Source§impl<I> Offset for LocatingSlice<I>where
I: Stream,
impl<I> Offset for LocatingSlice<I>where
I: Stream,
Source§fn offset_from(&self, other: &Self) -> usize
fn offset_from(&self, other: &Self) -> usize
Source§impl<I: Ord> Ord for LocatingSlice<I>
impl<I: Ord> Ord for LocatingSlice<I>
Source§fn cmp(&self, other: &LocatingSlice<I>) -> Ordering
fn cmp(&self, other: &LocatingSlice<I>) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl<I: PartialEq> PartialEq for LocatingSlice<I>
impl<I: PartialEq> PartialEq for LocatingSlice<I>
Source§impl<I: PartialOrd> PartialOrd for LocatingSlice<I>
impl<I: PartialOrd> PartialOrd for LocatingSlice<I>
Source§impl<I, E> Recover<E> for LocatingSlice<I>
Available on crate features unstable-recover
and std
only.
impl<I, E> Recover<E> for LocatingSlice<I>
Available on crate features
unstable-recover
and std
only.Source§fn is_recovery_supported() -> bool
fn is_recovery_supported() -> bool
Report whether the Stream
can save off errors for recovery
Source§fn record_err(
&mut self,
_token_start: &Self::Checkpoint,
_err_start: &Self::Checkpoint,
err: ErrMode<E>,
) -> Result<(), ErrMode<E>>
fn record_err( &mut self, _token_start: &Self::Checkpoint, _err_start: &Self::Checkpoint, err: ErrMode<E>, ) -> Result<(), ErrMode<E>>
Capture a top-level error Read more
Source§impl<I> SliceLen for LocatingSlice<I>where
I: SliceLen,
impl<I> SliceLen for LocatingSlice<I>where
I: SliceLen,
Source§impl<I: Stream> Stream for LocatingSlice<I>
impl<I: Stream> Stream for LocatingSlice<I>
Source§type IterOffsets = <I as Stream>::IterOffsets
type IterOffsets = <I as Stream>::IterOffsets
Iterate with the offset from the current location
Source§type Checkpoint = Checkpoint<<I as Stream>::Checkpoint, LocatingSlice<I>>
type Checkpoint = Checkpoint<<I as Stream>::Checkpoint, LocatingSlice<I>>
A parse location within the stream
Source§fn iter_offsets(&self) -> Self::IterOffsets
fn iter_offsets(&self) -> Self::IterOffsets
Iterate with the offset from the current location
Source§fn eof_offset(&self) -> usize
fn eof_offset(&self) -> usize
Returns the offset to the end of the input
Source§fn next_token(&mut self) -> Option<Self::Token>
fn next_token(&mut self) -> Option<Self::Token>
Split off the next token from the input
Source§fn offset_for<P>(&self, predicate: P) -> Option<usize>
fn offset_for<P>(&self, predicate: P) -> Option<usize>
Finds the offset of the next matching token
Source§fn offset_at(&self, tokens: usize) -> Result<usize, Needed>
fn offset_at(&self, tokens: usize) -> Result<usize, Needed>
Get the offset for the number of
tokens
into the stream Read moreSource§fn next_slice(&mut self, offset: usize) -> Self::Slice
fn next_slice(&mut self, offset: usize) -> Self::Slice
Split off a slice of tokens from the input Read more
Source§fn checkpoint(&self) -> Self::Checkpoint
fn checkpoint(&self) -> Self::Checkpoint
Save the current parse location within the stream
Source§fn reset(&mut self, checkpoint: &Self::Checkpoint)
fn reset(&mut self, checkpoint: &Self::Checkpoint)
Revert the stream to a prior
Self::Checkpoint
Read moreSource§fn peek_token(&self) -> Option<(Self, Self::Token)>where
Self: Clone,
fn peek_token(&self) -> Option<(Self, Self::Token)>where
Self: Clone,
Split off the next token from the input
Source§fn peek_slice(&self, offset: usize) -> (Self, Self::Slice)where
Self: Clone,
fn peek_slice(&self, offset: usize) -> (Self, Self::Slice)where
Self: Clone,
Split off a slice of tokens from the input
Source§fn peek_finish(&self) -> (Self, Self::Slice)where
Self: Clone,
fn peek_finish(&self) -> (Self, Self::Slice)where
Self: Clone,
Advance to the end of the stream
Source§impl<I> StreamIsPartial for LocatingSlice<I>where
I: StreamIsPartial,
impl<I> StreamIsPartial for LocatingSlice<I>where
I: StreamIsPartial,
Source§type PartialState = <I as StreamIsPartial>::PartialState
type PartialState = <I as StreamIsPartial>::PartialState
Whether the stream is currently partial or complete
Source§fn complete(&mut self) -> Self::PartialState
fn complete(&mut self) -> Self::PartialState
Mark the stream is complete
Source§fn restore_partial(&mut self, state: Self::PartialState)
fn restore_partial(&mut self, state: Self::PartialState)
Restore the stream back to its previous state
Source§fn is_partial_supported() -> bool
fn is_partial_supported() -> bool
Report whether the
Stream
is can ever be incompleteSource§fn is_partial(&self) -> bool
fn is_partial(&self) -> bool
Report whether the
Stream
is currently incompleteSource§impl<I> UpdateSlice for LocatingSlice<I>where
I: UpdateSlice,
impl<I> UpdateSlice for LocatingSlice<I>where
I: UpdateSlice,
Source§fn update_slice(self, inner: Self::Slice) -> Self
fn update_slice(self, inner: Self::Slice) -> Self
Convert an
Output
type to be used as Stream
impl<I: Copy> Copy for LocatingSlice<I>
impl<I: Eq> Eq for LocatingSlice<I>
impl<I> StructuralPartialEq for LocatingSlice<I>
Auto Trait Implementations§
impl<I> Freeze for LocatingSlice<I>where
I: Freeze,
impl<I> RefUnwindSafe for LocatingSlice<I>where
I: RefUnwindSafe,
impl<I> Send for LocatingSlice<I>where
I: Send,
impl<I> Sync for LocatingSlice<I>where
I: Sync,
impl<I> Unpin for LocatingSlice<I>where
I: Unpin,
impl<I> UnwindSafe for LocatingSlice<I>where
I: UnwindSafe,
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