#byte-offset #line-column #offset #byte-stream #numbers #io-read #converter

stream-locate-converter

A Stream reader which can convert between byte offset and line-column numbers. Support any type which implements io::Read.

3 releases

0.1.2 Jul 31, 2024
0.1.1 Jul 31, 2024
0.1.0 Jul 30, 2024

#6 in #byte-offset

Custom license

11KB
257 lines

stream-locate-converter

Reader offset and line-column location converter.
A Stream reader which can convert between byte offset and line-column numbers. Support any type which implements io::Read.

Example

use stream_locate_converter::Stream;
use stream_locate_converter::location;
use std::fs;

fn main() -> io::Result<()> {
  let file = fs::File::open("foo.rs")?;
  let mut stream = Stream::from(file);

  let offset = location::Offset::new(20);
  let line_index = stream.line_index(offset)?;

  let (line, col) = line_index.one_based().raw();
  println!("The offset is on line {line}, column {col}.");
}

No runtime deps