相关疑难解决方法(0)

如何获取`&str`之间的字节偏移量

我有两个&str 指向同一个 string,我需要知道它们之间的字节偏移量:

fn main() {
    let foo = "  bar";
    assert_eq!(offset(foo, foo.trim()), Some(2));

    let bar = "baz\nquz";
    let mut lines = bar.lines();
    assert_eq!(offset(bar, lines.next().unwrap()), Some(0));
    assert_eq!(offset(bar, lines.next().unwrap()), Some(4));

    assert_eq!(offset(foo, bar), None); // not a sub-string

    let quz = "quz".to_owned();
    assert_eq!(offset(bar, &quz), None); // not the same string, could also return `Some(4)`, I don't care
}
Run Code Online (Sandbox Code Playgroud)

这与 基本相同str::find,但由于第二个切片是第一个切片的子切片,我希望更快。如果几行相同,也str::find不会在这种lines()情况下工作。

我以为我可以使用一些指针算法来做类似的事情,foo.trim().as_ptr() - foo.as_ptr()但事实证明这Sub不是在原始指针上实现的。

rust

6
推荐指数
1
解决办法
616
查看次数

标签 统计

rust ×1