#file-line #line-column #string #processing #api #information #spans

spanned

具有文件/行/列信息和常规Rust str API的字符串处理

10个版本

0.3.0 2024年7月24日
0.2.1 2024年5月21日
0.1.6 2024年2月27日
0.1.5 2023年11月13日
0.1.3 2023年10月22日

#670 in 文件系统

Download history • Rust 包仓库 4038/week @ 2024-05-03 • Rust 包仓库 4250/week @ 2024-05-10 • Rust 包仓库 5120/week @ 2024-05-17 • Rust 包仓库 4637/week @ 2024-05-24 • Rust 包仓库 4267/week @ 2024-05-31 • Rust 包仓库 4798/week @ 2024-06-07 • Rust 包仓库 4907/week @ 2024-06-14 • Rust 包仓库 5415/week @ 2024-06-21 • Rust 包仓库 4519/week @ 2024-06-28 • Rust 包仓库 4980/week @ 2024-07-05 • Rust 包仓库 5254/week @ 2024-07-12 • Rust 包仓库 5426/week @ 2024-07-19 • Rust 包仓库 5848/week @ 2024-07-26 • Rust 包仓库 4939/week @ 2024-08-02 • Rust 包仓库 7301/week @ 2024-08-09 • Rust 包仓库 4459/week @ 2024-08-16 • Rust 包仓库

23,801 每月下载量
2 个Crates中使用(通过 ui_test

MIT/Apache

10KB
240 代码行

str&[u8]提供简单的跨度处理

此crate公开了一些存在于strbstr上的方法。如果您需要任何其他方法,请打开问题或PR。

基本用法是读取文件,然后使用这些方法修改它

let file = Spanned<String>::read_from_file(path)?;
for line in file.lines() {
    if let Some(rest) = line.strip_prefix("cake:") {
        println!("found a cake at {}: {}", rest.span.line_start, *rest);
    }
}

任何Spanned对象都将始终知道其文件、行和列信息,并在对子切片进行操作时正确保留这些信息。列信息以utf8字符的数量计算,这并不完全正确。如果您遇到这个问题,请打开一个问题。

依赖项

~5MB
~83K SLoC