pub struct Position { /* private fields */ }
Expand description
A cursor position in a &str
which provides useful methods to manually parse that string.
Implementations§
Source§impl Position
impl Position
Sourcepub fn new(input: Arc<str>, pos: usize) -> Option<Position>
pub fn new(input: Arc<str>, pos: usize) -> Option<Position>
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: Arc<str> = Arc::from("💖");
assert_eq!(Position::new(heart.clone(), 1), None);
assert_ne!(Position::new(heart, cheart.len_utf8()), None);
Sourcepub fn from_start(input: Arc<str>) -> Position
pub fn from_start(input: Arc<str>) -> Position
Creates a Position
at the start of a &str
.
§Examples
let start = Position::from_start(Arc::from(""));
assert_eq!(start.pos(), 0);
Sourcepub fn pos(&self) -> usize
pub fn pos(&self) -> usize
Returns the byte position of this Position
as a usize
.
§Examples
let input: Arc<str> = Arc::from("ab");
let mut start = Position::from_start(input);
assert_eq!(start.pos(), 0);
Sourcepub fn line_col(&self) -> (usize, usize)
pub fn line_col(&self) -> (usize, usize)
Returns the line and column number of this Position
.
§Examples
enum Rule {}
let input: Arc<str> = Arc::from("\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));
Sourcepub fn line_of(&self) -> &str
pub fn line_of(&self) -> &str
Returns the entire line of the input that contains this Position
.
§Examples
enum Rule {}
let input: Arc<str> = Arc::from("\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§
Source§impl Ord for Position
impl Ord for Position
Source§impl PartialOrd for Position
impl PartialOrd for Position
impl Eq for Position
Auto Trait Implementations§
impl Freeze for Position
impl RefUnwindSafe for Position
impl Send for Position
impl Sync for Position
impl Unpin for Position
impl UnwindSafe for Position
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