我有两个&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 ×1