pub struct SourceReader<'s> { /* private fields */ }Expand description
A string-slice reader that records how much of the slice has been read
Implementations§
Source§impl<'e> SourceReader<'e>
impl<'e> SourceReader<'e>
pub fn new(source: &'e str) -> Self
Sourcepub const fn span_from(&self, marker: Position) -> Span
pub const fn span_from(&self, marker: Position) -> Span
Span from some previously marked position to the current position of the reader
Sourcepub fn remaining(&self) -> &'e str
pub fn remaining(&self) -> &'e str
The portion of the source-string remaining to be read
#[cfg(feature = "unstable")]
{
use clojure_reader::parse::{SourceReader, parse};
let mut s = SourceReader::new("() []");
let _ = parse(&mut s).expect("failed to parse");
assert_eq!(s.remaining(), " []");
}Sourcepub const fn finish(self) -> (Position, &'e str)
pub const fn finish(self) -> (Position, &'e str)
Finishes the source-reader, returning:
- the current reader position, and
- the original source-string.
#[cfg(feature = "unstable")]
{
use clojure_reader::parse::{Position, SourceReader, parse};
let mut s = SourceReader::new("() []");
let _ = parse(&mut s).expect("failed to parse");
let (pos, slice) = s.finish();
assert_eq!(
pos,
Position {
line: 1,
column: 3,
ptr: 2
}
);
assert_eq!(slice, "() []");
assert_eq!(&slice[pos.ptr..], " []");
}Trait Implementations§
Auto Trait Implementations§
impl<'s> Freeze for SourceReader<'s>
impl<'s> RefUnwindSafe for SourceReader<'s>
impl<'s> Send for SourceReader<'s>
impl<'s> Sync for SourceReader<'s>
impl<'s> Unpin for SourceReader<'s>
impl<'s> UnsafeUnpin for SourceReader<'s>
impl<'s> UnwindSafe for SourceReader<'s>
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