pub struct ShiftOnly;Expand description
SeedChooser to build (1-)perfect functions called PHast+ without wrapping.
Must be used with [Function2].
It chooses best seed using only shifting without wrapping, which leads to very fast construction but the cost of bigger size.
Trait Implementations§
Source§impl SeedChooser for ShiftOnly
impl SeedChooser for ShiftOnly
Source§const FUNCTION2_THRESHOLD: usize = 8192
const FUNCTION2_THRESHOLD: usize = 8192
Size of last level of Function2. Important when
extra_shift()>0 (i.e. for ShiftOnly).type UsedValues = CyclicSet<{MAX_VALUES*2/64}>
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
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.
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§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 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
impl Copy for ShiftOnly
Auto Trait Implementations§
impl Freeze for ShiftOnly
impl RefUnwindSafe for ShiftOnly
impl Send for ShiftOnly
impl Sync for ShiftOnly
impl Unpin for ShiftOnly
impl UnsafeUnpin for ShiftOnly
impl UnwindSafe for ShiftOnly
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.