#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 4038/week @ 2024-05-03 4250/week @ 2024-05-10 5120/week @ 2024-05-17 4637/week @ 2024-05-24 4267/week @ 2024-05-31 4798/week @ 2024-06-07 4907/week @ 2024-06-14 5415/week @ 2024-06-21 4519/week @ 2024-06-28 4980/week @ 2024-07-05 5254/week @ 2024-07-12 5426/week @ 2024-07-19 5848/week @ 2024-07-26 4939/week @ 2024-08-02 7301/week @ 2024-08-09 4459/week @ 2024-08-16

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