Skip to main content

Scorer

Struct Scorer 

Source
pub struct Scorer { /* private fields */ }
Expand description

A reusable scorer with a fixed Prefer setting.

Construct once and call Scorer::score / Scorer::score_positions for each candidate. All three algorithms share the same Gotoh DP core; only the gap-penalty constants differ.

The free functions score and score_positions are thin wrappers around Scorer::default() (i.e. Prefer::Contiguous).

§Examples

use neek_core::{Scorer, config::Prefer};

// Prefer matches that start early in each candidate.
let scorer = Scorer::new(Prefer::Prefix);
assert!(scorer.score(b"bl", b"build") > scorer.score(b"bl", b"table"));

// Prefer matches that end late in each candidate.
let scorer = Scorer::new(Prefer::Suffix);
assert!(scorer.score(b"le", b"cable") > scorer.score(b"le", b"label"));

Implementations§

Source§

impl Scorer

Source

pub fn new(prefer: Prefer) -> Self

Create a new scorer with the given preference.

Source

pub fn prefer(self) -> Prefer

Return this scorer’s Prefer setting.

Source

pub fn score(self, needle: &[u8], haystack: &[u8]) -> Score

Compute the fuzzy match score of needle against haystack using this scorer’s preference.

Returns SCORE_MAX for an exact (case-insensitive) match, SCORE_MIN when there is no match or the inputs are out of range, and a finite score otherwise.

Source

pub fn score_positions( self, needle: &[u8], haystack: &[u8], positions: &mut [usize], ) -> Score

Compute the fuzzy match score and fill positions with the haystack indices of the matched needle characters.

positions must have length >= needle.len(). On return, positions[i] is the haystack index of the character matched to needle[i], in strictly increasing order.

Returns the same score as Scorer::score would for the same inputs.

§Allocation

Allocates two Vec<MaybeUninit<f64>> of size needle.len() × MATCH_MAX_LEN for the full DP matrices required by backtracking.

Trait Implementations§

Source§

impl Clone for Scorer

Source§

fn clone(&self) -> Scorer

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Scorer

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Scorer

Source§

fn default() -> Scorer

Returns the “default value” for a type. Read more
Source§

impl PartialEq for Scorer

Source§

fn eq(&self, other: &Scorer) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Scorer

Source§

impl Eq for Scorer

Source§

impl StructuralPartialEq for Scorer

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.