pub struct ShiftSeedWrapped<const MULTIPLIER: u8>(pub u8);Expand description
SeedChooser to build (1-)perfect functions which uses both shifting with wrapping and regular hashing.
The parameter points the number of bits of seed used for regular hashing.
Increasing it reduces size but slows down construction.
Can be used with any function type: [Function], [Function2], [Perfect].
It chooses best seed using both shifting with wrapping and hashing, which leads to small size and medium speed constrictions, but quite slow evaluation.
MULTIPLIER should be 1, 2, or 3.
Typically, increasing MULTIPLIER reduces size but slows down construction.
Tuple Fields§
§0: u8Trait Implementations§
Source§impl<const MULTIPLIER: u8> Clone for ShiftSeedWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> Clone for ShiftSeedWrapped<MULTIPLIER>
Source§fn clone(&self) -> ShiftSeedWrapped<MULTIPLIER>
fn clone(&self) -> ShiftSeedWrapped<MULTIPLIER>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<const MULTIPLIER: u8> SeedChooser for ShiftSeedWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> SeedChooser for ShiftSeedWrapped<MULTIPLIER>
type UsedValues = CyclicSet<{MAX_VALUES/64}>
fn conf( self, output_range: usize, input_size: usize, bits_per_seed: u8, bucket_size_100: u16, preferred_slice_len: u16, ) -> Conf
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_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<const MULTIPLIER: u8> Copy for ShiftSeedWrapped<MULTIPLIER>
Auto Trait Implementations§
impl<const MULTIPLIER: u8> Freeze for ShiftSeedWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> RefUnwindSafe for ShiftSeedWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> Send for ShiftSeedWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> Sync for ShiftSeedWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> Unpin for ShiftSeedWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> UnsafeUnpin for ShiftSeedWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> UnwindSafe for ShiftSeedWrapped<MULTIPLIER>
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.