pub struct LineIndex { /* private fields */ }Implementations§
Source§impl LineIndex
impl LineIndex
pub fn new() -> Self
Sourcepub fn new_starting_at(start_byte: usize) -> Self
pub fn new_starting_at(start_byte: usize) -> Self
Construct a line index that begins at the given byte offset. Bytes
before start_byte are never scanned and never appear in line_range.
Used by --tail to skip past the head of the source.
Sourcepub fn set_head_cap(&mut self, cap: usize)
pub fn set_head_cap(&mut self, cap: usize)
Limit the index to the first N logical lines from the start point.
line_count clamps to this and extend_to_byte stops scanning
past it. Used by --head N.
Sourcepub fn set_record_start(&mut self, re: Regex)
pub fn set_record_start(&mut self, re: Regex)
Enable records mode using the supplied regex. Must be called before any scanning has begun. Re-calling panics in debug builds.
Sourcepub fn records_mode(&self) -> bool
pub fn records_mode(&self) -> bool
True iff records mode is active (a regex was set).
pub fn line_count(&self) -> usize
pub fn extend_to_line(&mut self, n: usize, src: &dyn Source)
pub fn extend_to_end(&mut self, src: &dyn Source)
pub fn notice_new_bytes(&mut self, src: &dyn Source)
Sourcepub fn scanned_through(&self) -> usize
pub fn scanned_through(&self) -> usize
Byte position up to which the index has scanned.
Sourcepub fn extend_to_byte_for_query(&mut self, src: &dyn Source, byte: usize)
pub fn extend_to_byte_for_query(&mut self, src: &dyn Source, byte: usize)
Extend the index until byte is covered (or EOF). Public wrapper
around the private extend_to_byte, for callers that need to query
a specific byte position.
Sourcepub fn line_at_byte(&self, byte: usize) -> Option<usize>
pub fn line_at_byte(&self, byte: usize) -> Option<usize>
Find the physical-line index containing the byte at position byte.
Returns None if byte is before start_byte or at/after
scanned_through.
Sourcepub fn line_range(&self, n: usize, src: &dyn Source) -> Range<usize>
pub fn line_range(&self, n: usize, src: &dyn Source) -> Range<usize>
Byte range of line n (excluding the trailing newline).
Caller must ensure n < line_count() and the index has scanned through the line.
Sourcepub fn record_count(&self) -> usize
pub fn record_count(&self) -> usize
Number of records exposed by this index. Equals line_count() when
records mode is inactive. May be less than line_count() when
records mode is active and records span multiple physical lines.
Sourcepub fn record_range(&self, n: usize, src: &dyn Source) -> Range<usize>
pub fn record_range(&self, n: usize, src: &dyn Source) -> Range<usize>
Byte range of record n including embedded \ns. Excludes the
trailing \n after the record’s last physical line (if any).
Sourcepub fn record_line_range(&self, n: usize) -> Range<usize>
pub fn record_line_range(&self, n: usize) -> Range<usize>
Range of physical line indices [first..last) covered by record n.
Sourcepub fn line_to_record(&self, line_n: usize) -> usize
pub fn line_to_record(&self, line_n: usize) -> usize
Record index that contains physical line line_n. O(log records).