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§
Required Methods§
Sourceunsafe fn fill_raw(
&self,
buffer_ptr: *mut u8,
buffer_len: usize,
) -> Result<(), Self::Error>
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§
Sourcefn fill(&self, buffer: &mut [u8]) -> Result<(), Self::Error>
fn fill(&self, buffer: &mut [u8]) -> Result<(), Self::Error>
Fills slice with randomness based on surrounding entropy.
§Errors
See concrete EntropyGenerator::Error
.
Sourcefn generate<T>(&self) -> Result<T, Self::Error>where
T: EntropyConcreteGenerator<Self>,
fn generate<T>(&self) -> Result<T, Self::Error>where
T: EntropyConcreteGenerator<Self>,
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.