Struct pest::Position [−][src]
A cursor position in a &str
which provides useful methods to manually parse that string.
Implementations
impl<'i> Position<'i>
[src]
pub fn new(input: &str, pos: usize) -> Option<Position<'_>>
[src]
Attempts to create a new Position
at the given position. If the specified position is
an invalid index, or the specified position is not a valid UTF8 boundary, then None is
returned.
Examples
let cheart = '💖'; let heart = "💖"; assert_eq!(Position::new(heart, 1), None); assert_ne!(Position::new(heart, cheart.len_utf8()), None);
pub fn from_start(input: &'i str) -> Position<'i>
[src]
Creates a Position
at the start of a &str
.
Examples
let start = Position::from_start(""); assert_eq!(start.pos(), 0);
pub fn pos(&self) -> usize
[src]
Returns the byte position of this Position
as a usize
.
Examples
let input = "ab"; let mut start = Position::from_start(input); assert_eq!(start.pos(), 0);
pub fn span(&self, other: &Position<'i>) -> Span<'i>
[src]
Creates a Span
from two Position
s.
Panics
Panics if the positions come from different inputs.
Examples
let input = "ab"; let start = Position::from_start(input); let span = start.span(&start.clone()); assert_eq!(span.start(), 0); assert_eq!(span.end(), 0);
pub fn line_col(&self) -> (usize, usize)
[src]
Returns the line and column number of this Position
.
Examples
enum Rule {} let input = "\na"; let mut state: Box<pest::ParserState<Rule>> = pest::ParserState::new(input); let mut result = state.match_string("\na"); assert!(result.is_ok()); assert_eq!(result.unwrap().position().line_col(), (2, 2));
pub fn line_of(&self) -> &'i str
[src]
Returns the entire line of the input that contains this Position
.
Examples
enum Rule {} let input = "\na"; let mut state: Box<pest::ParserState<Rule>> = pest::ParserState::new(input); let mut result = state.match_string("\na"); assert!(result.is_ok()); assert_eq!(result.unwrap().position().line_of(), "a");
Trait Implementations
impl<'i> Clone for Position<'i>
[src]
impl<'i> Debug for Position<'i>
[src]
impl<'i> Eq for Position<'i>
[src]
impl<'i> Hash for Position<'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> Ord for Position<'i>
[src]
fn cmp(&self, other: &Position<'i>) -> Ordering
[src]
#[must_use]pub fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]
impl<'i> PartialEq<Position<'i>> for Position<'i>
[src]
fn eq(&self, other: &Position<'i>) -> bool
[src]
#[must_use]pub fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
impl<'i> PartialOrd<Position<'i>> for Position<'i>
[src]
fn partial_cmp(&self, other: &Position<'i>) -> Option<Ordering>
[src]
#[must_use]pub fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
Auto Trait Implementations
impl<'i> RefUnwindSafe for Position<'i>
impl<'i> Send for Position<'i>
impl<'i> Sync for Position<'i>
impl<'i> Unpin for Position<'i>
impl<'i> UnwindSafe for Position<'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>,