Trait RandomBits

Source
pub trait RandomBits: Sized {
    // Required methods
    fn try_random_bits(
        rng: &mut (impl RngCore + ?Sized),
        bit_length: u32,
    ) -> Result<Self, RandomBitsError>;
    fn try_random_bits_with_precision(
        rng: &mut (impl RngCore + ?Sized),
        bit_length: u32,
        bits_precision: u32,
    ) -> Result<Self, RandomBitsError>;

    // Provided methods
    fn random_bits(rng: &mut (impl RngCore + ?Sized), bit_length: u32) -> Self { ... }
    fn random_bits_with_precision(
        rng: &mut (impl RngCore + ?Sized),
        bit_length: u32,
        bits_precision: u32,
    ) -> Self { ... }
}
Available on crate feature rand_core only.
Expand description

Random bits generation support.

Required Methods§

Source

fn try_random_bits( rng: &mut (impl RngCore + ?Sized), bit_length: u32, ) -> Result<Self, RandomBitsError>

Generate a random value in range [0, 2^bit_length).

This method is variable time wrt bit_length.

If rng is a CSRNG, the generation is cryptographically secure as well.

Source

fn try_random_bits_with_precision( rng: &mut (impl RngCore + ?Sized), bit_length: u32, bits_precision: u32, ) -> Result<Self, RandomBitsError>

Generate a random value in range [0, 2^bit_length), returning an integer with the closest available size to bits_precision (if the implementing type supports runtime sizing).

This method is variable time wrt bit_length.

If rng is a CSRNG, the generation is cryptographically secure as well.

Provided Methods§

Source

fn random_bits(rng: &mut (impl RngCore + ?Sized), bit_length: u32) -> Self

Generate a random value in range [0, 2^bit_length).

A wrapper for RandomBits::try_random_bits that panics on error.

Source

fn random_bits_with_precision( rng: &mut (impl RngCore + ?Sized), bit_length: u32, bits_precision: u32, ) -> Self

Generate a random value in range [0, 2^bit_length), returning an integer with the closest available size to bits_precision (if the implementing type supports runtime sizing).

A wrapper for RandomBits::try_random_bits_with_precision that panics on 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§

Source§

impl RandomBits for BoxedUint

Available on crate feature alloc only.
Source§

impl<const LIMBS: usize> RandomBits for Int<LIMBS>

Source§

impl<const LIMBS: usize> RandomBits for Uint<LIMBS>