pub struct SeedOnly;Expand description
SeedChooser to build (1-)perfect functions.
Can be used with any function type: [Function], [Function2], [Perfect].
It chooses best seed with quite strong hasher, without shift component, which should lead to small size, but long construction time.
Trait Implementations§
Source§impl SeedChooser for SeedOnly
impl SeedChooser for SeedOnly
type UsedValues = CyclicSet<{MAX_VALUES/64}>
Source§fn f(self, primary_code: u64, seed: u16, conf: &Conf) -> usize
fn f(self, primary_code: u64, seed: u16, conf: &Conf) -> usize
Returns function value for given primary code and seed.
Source§fn best_seed(
self,
used_values: &mut Self::UsedValues,
keys: &[u64],
conf: &Conf,
bits_per_seed: u8,
) -> u16
fn best_seed( self, used_values: &mut Self::UsedValues, keys: &[u64], conf: &Conf, bits_per_seed: u8, ) -> u16
Returns best seed to store in seeds array or
u16::MAX if NO_BUMPING is true and there is no feasible seed.Source§const FIRST_SEED: u16 = _
const FIRST_SEED: u16 = _
The lowest seed that does not indicate bumping.
Source§const FUNCTION2_THRESHOLD: usize = 4096
const FUNCTION2_THRESHOLD: usize = 4096
Size of last level of Function2. Important when
extra_shift()>0 (i.e. for ShiftOnly).Source§fn k(self) -> u8
fn k(self) -> u8
Returns maximum number of keys mapped to each output value;
k of k-perfect function.Source§fn minimal_output_range(self, num_of_keys: usize) -> usize
fn minimal_output_range(self, num_of_keys: usize) -> usize
Returns output range of minimal (perfect or k-perfect) function for given number of keys.
fn bucket_evaluator(&self, bits_per_seed: u8, slice_len: u16) -> Weights
fn conf( self, output_range: usize, input_size: usize, bits_per_seed: u8, bucket_size_100: u16, preferred_slice_len: u16, ) -> Conf
fn conf_for_minimal( self, num_of_keys: usize, bits_per_seed: u8, bucket_size_100: u16, preferred_slice_len: u16, ) -> Conf
fn conf_for_minimal_p<SS: Copy + Into<u8>>( self, num_of_keys: usize, params: &Params<SS>, ) -> Conf
Source§fn extra_shift(self, _bits_per_seed: u8) -> u16
fn extra_shift(self, _bits_per_seed: u8) -> u16
How much the chooser can add to value over slice length.
impl Copy for SeedOnly
Auto Trait Implementations§
impl Freeze for SeedOnly
impl RefUnwindSafe for SeedOnly
impl Send for SeedOnly
impl Sync for SeedOnly
impl Unpin for SeedOnly
impl UnsafeUnpin for SeedOnly
impl UnwindSafe for SeedOnly
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
Mutably borrows from an owned value. Read more
Source§impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DowncastableFrom<T> for T
impl<T> DowncastableFrom<T> for T
Source§fn downcast_from(value: T) -> T
fn downcast_from(value: T) -> T
Truncate the current UnsignedInt to a possibly smaller size
Source§impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> UpcastableFrom<T> for T
impl<T> UpcastableFrom<T> for T
Source§fn upcast_from(value: T) -> T
fn upcast_from(value: T) -> T
Extend the current UnsignedInt to a possibly bigger size.