Trait SeedSize

Source
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§

Source

fn new_seed_vec( &self, seed: u16, number_of_seeds: usize, ) -> Box<[Self::VecElement]>

Source

fn get_seed(&self, vec: &[Self::VecElement], index: usize) -> u16

Source

fn set_seed(&self, vec: &mut [Self::VecElement], index: usize, seed: u16)

Source

fn write_seed_vec( &self, output: &mut dyn Write, seeds: &[Self::VecElement], ) -> Result<(), Error>

Source

fn read_seed_vec( input: &mut dyn Read, number_of_seeds: usize, ) -> Result<(Self, Box<[Self::VecElement]>), Error>

Provided Methods§

Source

fn validate(&self) -> Result<Self, &'static str>

Source

fn new_zeroed_seed_vec(&self, number_of_seeds: usize) -> Box<[Self::VecElement]>

Source

fn init_seed(&self, vec: &mut [Self::VecElement], index: usize, seed: u16)

Source

fn concatenate_seed_vecs( &self, level_sizes: &[u64], group_seeds: Vec<Box<[Self::VecElement]>>, ) -> Box<[Self::VecElement]>

Source

fn write(&self, output: &mut dyn Write) -> Result<(), Error>

Writes self to output.

Source

fn read(input: &mut dyn Read) -> Result<Self, Error>

Reads Self from input.

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.

Implementors§