pub trait SeedSize:
Copy
+ Into<u8>
+ Sync
+ TryFrom<u8, Error = &'static str> {
type VecElement: Copy + Send + Sync + GetSize;
// Required methods
fn new_seed_vec(
&self,
seed: u16,
number_of_seeds: usize,
) -> Box<[Self::VecElement]>;
fn get_seed(&self, vec: &[Self::VecElement], index: usize) -> u16;
fn set_seed(&self, vec: &mut [Self::VecElement], index: usize, seed: u16);
fn write_seed_vec(
&self,
output: &mut dyn Write,
seeds: &[Self::VecElement],
) -> Result<(), Error>;
fn read_seed_vec(
input: &mut dyn Read,
number_of_seeds: usize,
) -> Result<(Self, Box<[Self::VecElement]>), Error>;
// Provided methods
fn validate(&self) -> Result<Self, &'static str> { ... }
fn new_zeroed_seed_vec(
&self,
number_of_seeds: usize,
) -> Box<[Self::VecElement]> { ... }
fn init_seed(&self, vec: &mut [Self::VecElement], index: usize, seed: u16) { ... }
fn concatenate_seed_vecs(
&self,
level_sizes: &[u64],
group_seeds: Vec<Box<[Self::VecElement]>>,
) -> Box<[Self::VecElement]> { ... }
fn write(&self, output: &mut dyn Write) -> Result<(), Error> { ... }
fn read(input: &mut dyn Read) -> Result<Self, Error> { ... }
}
Expand description
Implementations of SeedSize
represent seed size in fingerprinting-based minimal perfect hashing with group optimization.
Required Associated Types§
Required Methods§
fn new_seed_vec( &self, seed: u16, number_of_seeds: usize, ) -> Box<[Self::VecElement]>
fn get_seed(&self, vec: &[Self::VecElement], index: usize) -> u16
fn set_seed(&self, vec: &mut [Self::VecElement], index: usize, seed: u16)
fn write_seed_vec( &self, output: &mut dyn Write, seeds: &[Self::VecElement], ) -> Result<(), Error>
fn read_seed_vec( input: &mut dyn Read, number_of_seeds: usize, ) -> Result<(Self, Box<[Self::VecElement]>), Error>
Provided Methods§
fn validate(&self) -> Result<Self, &'static str>
fn new_zeroed_seed_vec(&self, number_of_seeds: usize) -> Box<[Self::VecElement]>
fn init_seed(&self, vec: &mut [Self::VecElement], index: usize, seed: u16)
fn concatenate_seed_vecs( &self, level_sizes: &[u64], group_seeds: Vec<Box<[Self::VecElement]>>, ) -> Box<[Self::VecElement]>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.