EntropyGenerator

Trait EntropyGenerator 

Source
pub trait EntropyGenerator:
    Sized
    + ReprC
    + Clone {
    type Error: ReprC;

    // Required method
    unsafe fn fill_raw(
        &self,
        buffer_ptr: *mut u8,
        buffer_len: usize,
    ) -> Result<(), Self::Error>;

    // Provided methods
    fn fill(&self, buffer: &mut [u8]) -> Result<(), Self::Error> { ... }
    fn generate<T>(&self) -> Result<T, Self::Error>
       where T: EntropyConcreteGenerator<Self> { ... }
}
Expand description

Generates randomness based on surrounding entropy, i.e. based on what the operating system provides as “true” randomness. The generator should be expected to be quite slow, but should also provide excelent randomness, as close to “true” randomness as possible.

Required Associated Types§

Source

type Error: ReprC

Represents a failure of entropy generation.

Required Methods§

Source

unsafe fn fill_raw( &self, buffer_ptr: *mut u8, buffer_len: usize, ) -> Result<(), Self::Error>

Fills raw ptr with randomness based on surrounding entropy.

§Errors

See concrete EntropyGenerator::Error.

§Safety

This function assumes that both buffer_ptr and buffer_len point to a valid chunk of memory. Otherwise the behaviour is undefined.

Provided Methods§

Source

fn fill(&self, buffer: &mut [u8]) -> Result<(), Self::Error>

Fills slice with randomness based on surrounding entropy.

§Errors

See concrete EntropyGenerator::Error.

Source

fn generate<T>(&self) -> Result<T, Self::Error>
where T: EntropyConcreteGenerator<Self>,

Generates random instance of given type.

§Errors

See concrete EntropyGenerator::Error.

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§