Struct pest::Span [−][src]
A span over a &str
. It is created from either two Position
s or from a Pair
.
Implementations
impl<'i> Span<'i>
[src]
pub fn new(input: &str, start: usize, end: usize) -> Option<Span<'_>>
[src]
Attempts to create a new span. Will return None
if input[start..end]
is an invalid index
into input
.
Examples
let input = "Hello!"; assert_eq!(None, Span::new(input, 100, 0)); assert!(Span::new(input, 0, input.len()).is_some());
pub fn start(&self) -> usize
[src]
Returns the Span
’s start byte position as a usize
.
Examples
let input = "ab"; let start = Position::from_start(input); let end = start.clone(); let span = start.span(&end); assert_eq!(span.start(), 0);
pub fn end(&self) -> usize
[src]
Returns the Span
’s end byte position as a usize
.
Examples
let input = "ab"; let start = Position::from_start(input); let end = start.clone(); let span = start.span(&end); assert_eq!(span.end(), 0);
pub fn start_pos(&self) -> Position<'i>
[src]
Returns the Span
’s start Position
.
Examples
let input = "ab"; let start = Position::from_start(input); let end = start.clone(); let span = start.clone().span(&end); assert_eq!(span.start_pos(), start);
pub fn end_pos(&self) -> Position<'i>
[src]
Returns the Span
’s end Position
.
Examples
let input = "ab"; let start = Position::from_start(input); let end = start.clone(); let span = start.span(&end); assert_eq!(span.end_pos(), end);
pub fn split(self) -> (Position<'i>, Position<'i>)
[src]
Splits the Span
into a pair of Position
s.
Examples
let input = "ab"; let start = Position::from_start(input); let end = start.clone(); let span = start.clone().span(&end); assert_eq!(span.split(), (start, end));
pub fn as_str(&self) -> &'i str
[src]
Captures a slice from the &str
defined by the Span
.
Examples
enum Rule {} let input = "abc"; let mut state: Box<pest::ParserState<Rule>> = pest::ParserState::new(input).skip(1).unwrap(); let start_pos = state.position().clone(); state = state.match_string("b").unwrap(); let span = start_pos.span(&state.position().clone()); assert_eq!(span.as_str(), "b");
pub fn lines(&self) -> Lines<'_>ⓘ
[src]
Iterates over all lines (partially) covered by this span.
Examples
enum Rule {} let input = "a\nb\nc"; let mut state: Box<pest::ParserState<Rule>> = pest::ParserState::new(input).skip(2).unwrap(); let start_pos = state.position().clone(); state = state.match_string("b\nc").unwrap(); let span = start_pos.span(&state.position().clone()); assert_eq!(span.lines().collect::<Vec<_>>(), vec!["b\n", "c"]);
Trait Implementations
impl<'i> Clone for Span<'i>
[src]
impl<'i> Debug for Span<'i>
[src]
impl<'i> Eq for Span<'i>
[src]
impl<'i> Hash for Span<'i>
[src]
fn hash<H: Hasher>(&self, state: &mut H)
[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl<'i> PartialEq<Span<'i>> for Span<'i>
[src]
Auto Trait Implementations
impl<'i> RefUnwindSafe for Span<'i>
impl<'i> Send for Span<'i>
impl<'i> Sync for Span<'i>
impl<'i> Unpin for Span<'i>
impl<'i> UnwindSafe for Span<'i>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,