pub(crate) struct Searcher {
imp: Arc<dyn SearcherT>,
memory_usage: usize,
minimum_len: usize,
}
Expand description
A searcher that dispatches to one of several possible Teddy variants.
Fields§
§imp: Arc<dyn SearcherT>
The Teddy variant we use. We use dynamic dispatch under the theory that it results in better codegen then a enum, although this is a specious claim.
This Searcher
is essentially a wrapper for a SearcherT
trait
object. We just make memory_usage
and minimum_len
available without
going through dynamic dispatch.
memory_usage: usize
Total heap memory used by the Teddy variant.
minimum_len: usize
The minimum haystack length this searcher can handle. It is intended for callers to use some other search routine (such as Rabin-Karp) in cases where the haystack (or remainer of the haystack) is too short.
Implementations§
source§impl Searcher
impl Searcher
sourcepub(crate) fn find(&self, haystack: &[u8], at: usize) -> Option<Match>
pub(crate) fn find(&self, haystack: &[u8], at: usize) -> Option<Match>
Look for the leftmost occurrence of any pattern in this search in the given haystack starting at the given position.
§Panics
This panics when haystack[at..].len()
is less than the minimum length
for this haystack.
sourcepub(crate) fn memory_usage(&self) -> usize
pub(crate) fn memory_usage(&self) -> usize
Returns the approximate total amount of heap used by this type, in units of bytes.
sourcepub(crate) fn minimum_len(&self) -> usize
pub(crate) fn minimum_len(&self) -> usize
Returns the minimum length, in bytes, that a haystack must be in order to use it with this searcher.