diff --git a/CHANGELOG.md b/CHANGELOG.md index 4efc4dc..66bdea3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ and this library adheres to Rust's notion of ### Changed - MSRV is now 1.63.0. - Migrated to `rand_core 0.9`. +- `ff::Field::random(rng: impl RngCore) -> Self` has been changed back to + `Field::random(rng: &mut R) -> Self`, to enable passing a + trait object as the RNG. ### Removed - `derive_bits` feature flag (use `bits` instead). diff --git a/ff_derive/src/lib.rs b/ff_derive/src/lib.rs index 5e7ebb6..fb576a0 100644 --- a/ff_derive/src/lib.rs +++ b/ff_derive/src/lib.rs @@ -1267,7 +1267,7 @@ fn prime_field_impl( const ONE: Self = R; /// Computes a uniformly random element using rejection sampling. - fn random(mut rng: impl ::ff::derive::rand_core::RngCore) -> Self { + fn random(rng: &mut R) -> Self { loop { let mut tmp = { let mut repr = [0u64; #limbs]; diff --git a/src/lib.rs b/src/lib.rs index b2093b4..e873ee5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -75,7 +75,7 @@ pub trait Field: const ONE: Self; /// Returns an element chosen uniformly at random using a user-provided RNG. - fn random(rng: impl RngCore) -> Self; + fn random(rng: &mut R) -> Self; /// Returns true iff this element is zero. fn is_zero(&self) -> Choice { diff --git a/tests/derive.rs b/tests/derive.rs index f65b640..266edfe 100644 --- a/tests/derive.rs +++ b/tests/derive.rs @@ -32,7 +32,7 @@ mod full_limbs { fn random_masking_does_not_overflow() { use ff::Field; - let _ = F384p::random(rand::rng()); + let _ = F384p::random(&mut rand::rng()); } }