pub struct MmapInput { /* private fields */ }
Expand description
Input wrapping a memory mapped file.
Implementations§
source§impl MmapInput
impl MmapInput
sourcepub unsafe fn map_file<D: MmapAsRawDesc>(
file_desc: D
) -> Result<Self, InputError>
pub unsafe fn map_file<D: MmapAsRawDesc>( file_desc: D ) -> Result<Self, InputError>
Map a file to memory.
Safety
This operation is inherently unsafe, since the file can be modified in or out of process. See Mmap documentation.
Errors
Calling mmap might result in an IO error.
Examples found in repository?
examples/approx_spans_usage.rs (line 22)
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
fn main() -> Result<ExitCode, Box<dyn Error>> {
let args: Vec<_> = env::args().collect();
if args.len() != 3 {
eprintln!("provide exactly two arguments, query and file path");
return Ok(ExitCode::FAILURE);
}
let query_arg = &args[1];
let file_path = &args[2];
let query = JsonPathQuery::parse(query_arg)?;
let file = fs::File::open(file_path)?;
let input = unsafe { MmapInput::map_file(&file)? };
let stdout_lock = io::stdout().lock();
let mut sink = MatchWriter::from(stdout_lock);
let engine = RsonpathEngine::compile_query(&query)?;
engine.approximate_spans(&input, &mut sink)?;
Ok(ExitCode::SUCCESS)
}
Trait Implementations§
source§impl Input for MmapInput
impl Input for MmapInput
§type BlockIterator<'a, 'r, const N: usize, R> = BorrowedBytesBlockIterator<'a, 'r, N, R>
where
R: InputRecorder<&'a [u8]> + 'r
type BlockIterator<'a, 'r, const N: usize, R> = BorrowedBytesBlockIterator<'a, 'r, N, R> where R: InputRecorder<&'a [u8]> + 'r
Type of the iterator used by
iter_blocks
, parameterized
by the lifetime of source input and the size of the block.source§fn len_hint(&self) -> Option<usize>
fn len_hint(&self) -> Option<usize>
Return the length of the entire input, if known. Read more
source§fn iter_blocks<'a, 'r, R, const N: usize>(
&'a self,
recorder: &'r R
) -> Self::BlockIterator<'a, 'r, N, R>where
R: InputRecorder<&'a [u8]>,
fn iter_blocks<'a, 'r, R, const N: usize>( &'a self, recorder: &'r R ) -> Self::BlockIterator<'a, 'r, N, R>where R: InputRecorder<&'a [u8]>,
Iterate over blocks of size
N
of the input.
N
has to be a power of two larger than 1.source§fn seek_backward(&self, from: usize, needle: u8) -> Option<usize>
fn seek_backward(&self, from: usize, needle: u8) -> Option<usize>
Search for an occurrence of
needle
in the input,
starting from from
and looking back. Returns the index
of the first occurrence or None
if the needle
was not found.source§fn seek_forward<const N: usize>(
&self,
from: usize,
needles: [u8; N]
) -> Result<Option<(usize, u8)>, InputError>
fn seek_forward<const N: usize>( &self, from: usize, needles: [u8; N] ) -> Result<Option<(usize, u8)>, InputError>
Search for an occurrence of any of the
needles
in the input,
starting from from
and looking forward. Returns the index
of the first occurrence and the needle found, or None
if none of the needles
were not found. Read moresource§fn seek_non_whitespace_forward(
&self,
from: usize
) -> Result<Option<(usize, u8)>, InputError>
fn seek_non_whitespace_forward( &self, from: usize ) -> Result<Option<(usize, u8)>, InputError>
Search for the first byte in the input that is not ASCII whitespace
starting from
from
. Returns a pair: the index of first such byte,
and the byte itself; or None
if no non-whitespace characters
were found. Read moresource§fn seek_non_whitespace_backward(&self, from: usize) -> Option<(usize, u8)>
fn seek_non_whitespace_backward(&self, from: usize) -> Option<(usize, u8)>
Search for the first byte in the input that is not ASCII whitespace
starting from
from
and looking back. Returns a pair:
the index of first such byte, and the byte itself;
or None
if no non-whitespace characters were found.source§fn is_member_match(&self, from: usize, to: usize, label: &JsonString) -> bool
fn is_member_match(&self, from: usize, to: usize, label: &JsonString) -> bool
Decide whether the slice of input between
from
(inclusive)
and to
(exclusive) matches the member
(comparing bitwise,
including double quotes delimiters). Read moreAuto Trait Implementations§
impl RefUnwindSafe for MmapInput
impl Send for MmapInput
impl Sync for MmapInput
impl Unpin for MmapInput
impl UnwindSafe for MmapInput
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