pub unsafe trait Searcher<'a> {
// Required methods
fn haystack(&self) -> &'a str;
fn next(&mut self) -> SearchStep;
// Provided methods
fn next_match(&mut self) -> Option<(usize, usize)> { ... }
fn next_reject(&mut self) -> Option<(usize, usize)> { ... }
}
🔬This is a nightly-only experimental API. (
pattern
#27721)Expand description
Required Methods§
sourcefn haystack(&self) -> &'a str
fn haystack(&self) -> &'a str
🔬This is a nightly-only experimental API. (
pattern
#27721)要在其中搜索的底层字符串的 Getter
总是返回相同的 &str
。
sourcefn next(&mut self) -> SearchStep
fn next(&mut self) -> SearchStep
🔬This is a nightly-only experimental API. (
pattern
#27721)从头开始执行下一个搜索步骤。
- 如果
haystack[a..b]
与模式匹配,则返回Match(a, b)
。 - 如果
haystack[a..b]
甚至部分不匹配,则返回Reject(a, b)
。 - 如果已访问 haystack 的每个字节,则返回
Done
。
直到 Done
的 Match
和 Reject
值流将包含相邻,不重叠,覆盖整个 haystack 并位于 utf8 边界上的索引范围。
Match
结果需要包含整个匹配的模式,但是 Reject
结果可以分为任意多个相邻的片段。两个范围的长度都可以为零。
例如,模式 "aaa"
和 haystack "cbaaaaab"
可能产生流 [Reject(0, 1), Reject(1, 2), Match(2, 5), Reject(5, 8)]
Provided Methods§
sourcefn next_match(&mut self) -> Option<(usize, usize)>
fn next_match(&mut self) -> Option<(usize, usize)>
🔬This is a nightly-only experimental API. (
pattern
#27721)与 next()
不同,不能保证此和 next_reject
的返回范围会重叠。
这将返回 (start_match, end_match)
,其中 start_match 是匹配开始的索引,end_match 是匹配结束后的索引。
sourcefn next_reject(&mut self) -> Option<(usize, usize)>
fn next_reject(&mut self) -> Option<(usize, usize)>
🔬This is a nightly-only experimental API. (
pattern
#27721)查找下一个 Reject
结果。请参见 next()
和 next_match()
。
与 next()
不同,不能保证此和 next_match
的返回范围会重叠。