5 个不稳定版本

0.3.0 2023年11月19日
0.2.2 2023年8月26日
0.2.1 2023年8月6日
0.2.0 2023年8月6日
0.1.0 2023年8月6日

479文本处理 中排名

Download history • Rust 包仓库 476/week @ 2024-03-13 • Rust 包仓库 1316/week @ 2024-03-20 • Rust 包仓库 545/week @ 2024-03-27 • Rust 包仓库 720/week @ 2024-04-03 • Rust 包仓库 369/week @ 2024-04-10 • Rust 包仓库 328/week @ 2024-04-17 • Rust 包仓库 514/week @ 2024-04-24 • Rust 包仓库 367/week @ 2024-05-01 • Rust 包仓库 789/week @ 2024-05-08 • Rust 包仓库 749/week @ 2024-05-15 • Rust 包仓库 434/week @ 2024-05-22 • Rust 包仓库 388/week @ 2024-05-29 • Rust 包仓库 311/week @ 2024-06-05 • Rust 包仓库 313/week @ 2024-06-12 • Rust 包仓库 251/week @ 2024-06-19 • Rust 包仓库 332/week @ 2024-06-26 • Rust 包仓库

每月下载量 1,291
6 crate 中使用(4 个直接使用)

MIT 许可证

10KB
199

line-numbers crates.io codecov.io

line-numbers 是一个 Rust crate,用于高效地查找字符串偏移量对应的行号。

用法

创建一个 LinePositions,然后你可以找到一个偏移量的行号。

let s = "foo\nbar\nbaz\n";
let s_lines: Vec<_> = s.lines().collect();

let line_positions = LinePositions::from(s);

let offset = 5;
let line_num = line_positions.from_offset(offset);
println!(
    "Offset {} is on line {}, which has the text {:?}.",
    offset,
    line_num.display(),
    s_lines[line_num.as_usize()]
);

类似项目

  • line-span 解决了类似的问题,但每次都会扫描整个字符串。

lib.rs:

高效地在字符串内查找行号和行跨度。

use line_numbers::LinePositions;

let s = "foo\nbar\nbaz\n";
let s_lines: Vec<_> = s.lines().collect();

let line_positions = LinePositions::from(s);

let offset = 5;
let line_num = line_positions.from_offset(offset);
println!(
    "Offset {} is on line {}, which has the text {:?}.",
    offset,
    line_num.display(),
    s_lines[line_num.as_usize()]
);

无运行时依赖