pub struct ShiftOnlyWrapped<const MULTIPLIER: u8 = 1>;Expand description
SeedChooser to build (1-)perfect functions called PHast+ with wrapping.
Can be used with any function type: [Function], [Function2], [Perfect].
It chooses best seed using only shifting with wrapping, which leads to quite small size and quite fast construction.
MULTIPLIER should be 1, 2, or 3.
Typically, increasing MULTIPLIER reduces size but slows down construction.
MULTIPLIER=1 works very well with large bits_per_seed (10+),
larger values (2 and 3) works well with bits_per_seed=8.
Trait Implementations§
Source§impl<const MULTIPLIER: u8> Clone for ShiftOnlyWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> Clone for ShiftOnlyWrapped<MULTIPLIER>
Source§fn clone(&self) -> ShiftOnlyWrapped<MULTIPLIER>
fn clone(&self) -> ShiftOnlyWrapped<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 ShiftOnlyWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> SeedChooser for ShiftOnlyWrapped<MULTIPLIER>
type UsedValues = CyclicSet<{MAX_VALUES/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 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 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 ShiftOnlyWrapped<MULTIPLIER>
Auto Trait Implementations§
impl<const MULTIPLIER: u8> Freeze for ShiftOnlyWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> RefUnwindSafe for ShiftOnlyWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> Send for ShiftOnlyWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> Sync for ShiftOnlyWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> Unpin for ShiftOnlyWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> UnsafeUnpin for ShiftOnlyWrapped<MULTIPLIER>
impl<const MULTIPLIER: u8> UnwindSafe for ShiftOnlyWrapped<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.