#byte-offset #io-read #offset #read-line #io #reader #io-stream

reading-liner

一种流式读取器,能够将字节偏移量和行列号之间进行转换。支持实现 io::Read 任何类型的类型。

1 个不稳定版本

0.1.0 2024年8月1日

5#byte-offset

Download history 94/week @ 2024-07-28 9/week @ 2024-08-04

103 每月下载量

自定义许可

14KB
338

reading-liner

读取和转换偏移量和行列位置。

一种流式读取器,能够将字节偏移量和行列号之间进行转换。支持实现 io::Read 任何类型的类型。

核心方法

  • Stream::line_index(&mut self, offset:: location::Offset) -> io::Result<location::line_column::ZeroBased>

  • Stream::offset_of(&mut self,line_index: location::line_column::ZeroBased) -> io::Result<location::Offset>

  • Stream::read_line_index(&mut self, offset:: location::Offset,buf: &mut Vec<u8>) -> io::Result<location::line_column::ZeroBased>

  • Stream::read_offset_of(&mut self,line_index: location::line_column::ZeroBased,buf: &mut Vec<u8>) -> io::Result<location::Offset>

示例

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}.");
}

无运行时依赖