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.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Searcher
impl RefUnwindSafe for Searcher
impl Send for Searcher
impl Sync for Searcher
impl Unpin for Searcher
impl UnwindSafe for Searcher
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)