Struct rdrand::RdSeed [−][src]
A cryptographically secure non-deterministic random bit generator.
This generator produces high-entropy output and is suited to seed other pseudo-random generators.
This instruction is only supported by recent architectures such as Intel Broadwell and AMD Zen.
This generator is not intended for general random number generation purposes and should be used to seed other generators implementing rand_core::SeedableRng.
Implementations
impl RdSeed
[src]
pub fn new() -> Result<Self, ErrorCode>
[src]
Create a new instance of the random number generator.
This constructor checks whether the CPU the program is running on supports the instruction necessary for this generator to operate. If the instruction is not supported, an error is returned.
pub fn try_next_u16(&self) -> Result<u16, ErrorCode>
[src]
Generate a single random u16
value.
The underlying instruction may fail for variety reasons (such as actual hardware failure or exhausted entropy), however the exact reason for the failure is not usually exposed.
This method will retry calling the instruction a few times, however if all the
attempts fail, it will return None
.
In case Err
is returned, the caller should assume that a non-recoverable failure
has occured and use another random number genrator instead.
pub fn try_next_u32(&self) -> Result<u32, ErrorCode>
[src]
Generate a single random u32
value.
The underlying instruction may fail for variety reasons (such as actual hardware failure or exhausted entropy), however the exact reason for the failure is not usually exposed.
This method will retry calling the instruction a few times, however if all the
attempts fail, it will return None
.
In case Err
is returned, the caller should assume that a non-recoverable failure
has occured and use another random number genrator instead.
pub fn try_next_u64(&self) -> Result<u64, ErrorCode>
[src]
Generate a single random u64
value.
The underlying instruction may fail for variety reasons (such as actual hardware failure or exhausted entropy), however the exact reason for the failure is not usually exposed.
This method will retry calling the instruction a few times, however if all the
attempts fail, it will return None
.
In case Err
is returned, the caller should assume that a non-recoverable failure
has occured and use another random number genrator instead.
Note, that on 32-bit targets, there’s no underlying instruction to generate a 64-bit number, so it is emulated with the 32-bit version of the instruction.
pub fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), ErrorCode>
[src]
Fill a buffer dest
with random data.
This method will use the most appropriate variant of the instruction available on
the machine to achieve the greatest single-core throughput, however it has a
slightly higher setup cost than the plain next_u32
or next_u64
methods.
The underlying instruction may fail for variety reasons (such as actual hardware failure or exhausted entropy), however the exact reason for the failure is not usually exposed.
This method will retry calling the instruction a few times, however if all the attempts fail, it will return an error.
If an error is returned, the caller should assume that an non-recoverable hardware failure has occured and use another random number genrator instead.
Trait Implementations
impl Clone for RdSeed
[src]
impl Copy for RdSeed
[src]
impl CryptoRng for RdSeed
[src]
impl RngCore for RdSeed
[src]
fn next_u32(&mut self) -> u32
[src]
Generate a single random u32
value.
The underlying instruction may fail for variety reasons (such as actual hardware failure or exhausted entropy), however the exact reason for the failure is not usually exposed.
Panic
This method will retry calling the instruction a few times, however if all the
attempts fail, it will panic
.
In case panic
occurs, the caller should assume that an non-recoverable
hardware failure has occured and use another random number genrator instead.
fn next_u64(&mut self) -> u64
[src]
Generate a single random u64
value.
The underlying instruction may fail for variety reasons (such as actual hardware failure or exhausted entropy), however the exact reason for the failure is not usually exposed.
Note, that on 32-bit targets, there’s no underlying instruction to generate a 64-bit number, so it is emulated with the 32-bit version of the instruction.
Panic
This method will retry calling the instruction a few times, however if all the
attempts fail, it will panic
.
In case panic
occurs, the caller should assume that an non-recoverable
hardware failure has occured and use another random number genrator instead.
fn fill_bytes(&mut self, dest: &mut [u8])
[src]
Fill a buffer dest
with random data.
See try_fill_bytes
for a more extensive documentation.
Panic
This method will panic any time try_fill_bytes
would return an error.
fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error>
[src]
Fill a buffer dest
with random data.
This method will use the most appropriate variant of the instruction available on
the machine to achieve the greatest single-core throughput, however it has a
slightly higher setup cost than the plain next_u32
or next_u64
methods.
The underlying instruction may fail for variety reasons (such as actual hardware failure or exhausted entropy), however the exact reason for the failure is not usually exposed.
This method will retry calling the instruction a few times, however if all the attempts fail, it will return an error.
If an error is returned, the caller should assume that an non-recoverable hardware failure has occured and use another random number genrator instead.
Auto Trait Implementations
impl RefUnwindSafe for RdSeed
impl Send for RdSeed
impl Sync for RdSeed
impl Unpin for RdSeed
impl UnwindSafe for RdSeed
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,