Skip to content

Commit 8bf4676

Browse files
committed
feat: support rand 0.9
Signed-off-by: tison <wander4096@gmail.com>
1 parent c074547 commit 8bf4676

3 files changed

Lines changed: 100 additions & 32 deletions

File tree

Cargo.lock

Lines changed: 71 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ derive-visitor = { version = "0.4.0", optional = true }
2222
num-cmp = { version = "0.1.0", optional = true }
2323
num-traits = { version = "0.2.9", default-features = false }
2424
proptest = { version = "1.0.0", optional = true }
25-
rand = { version = "0.8.3", optional = true, default-features = false }
25+
rand = { version = "0.9.2", optional = true, default-features = false }
2626
rkyv = { version = "0.7.41", optional = true, default-features = false, features = ["rend"] }
2727
schemars = { version = "0.8.8", optional = true }
2828
serde = { version = "1.0", optional = true, default-features = false }
@@ -35,8 +35,8 @@ serde_test = "1.0"
3535
default = ["std"]
3636
std = ["num-traits/std"]
3737
libm = ["num-traits/libm"]
38-
serde = ["dep:serde", "rand?/serde1"]
39-
randtest = ["rand/std", "rand/std_rng"]
38+
serde = ["dep:serde", "rand?/serde"]
39+
randtest = ["rand/default"]
4040
rkyv = ["rkyv_32"]
4141
rkyv_16 = ["dep:rkyv", "rkyv?/size_16"]
4242
rkyv_32 = ["dep:rkyv", "rkyv?/size_32"]

src/lib.rs

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2567,8 +2567,8 @@ mod impl_schemars {
25672567
#[cfg(feature = "rand")]
25682568
mod impl_rand {
25692569
use super::{NotNan, OrderedFloat};
2570-
use rand::distributions::uniform::*;
2571-
use rand::distributions::{Distribution, Open01, OpenClosed01, Standard};
2570+
use rand::distr::uniform::*;
2571+
use rand::distr::{Distribution, Open01, OpenClosed01, StandardUniform};
25722572
use rand::Rng;
25732573

25742574
macro_rules! impl_distribution {
@@ -2592,7 +2592,7 @@ mod impl_rand {
25922592
}
25932593
}
25942594

2595-
impl_distribution! { Standard, f32, f64 }
2595+
impl_distribution! { StandardUniform, f32, f64 }
25962596
impl_distribution! { Open01, f32, f64 }
25972597
impl_distribution! { OpenClosed01, f32, f64 }
25982598

@@ -2638,14 +2638,17 @@ mod impl_rand {
26382638
($f:ty) => {
26392639
impl UniformSampler for UniformNotNan<$f> {
26402640
type X = NotNan<$f>;
2641-
fn new<B1, B2>(low: B1, high: B2) -> Self
2641+
fn new<B1, B2>(low: B1, high: B2) -> Result<Self, Error>
26422642
where
26432643
B1: SampleBorrow<Self::X> + Sized,
26442644
B2: SampleBorrow<Self::X> + Sized,
26452645
{
2646-
UniformNotNan(UniformFloat::<$f>::new(low.borrow().0, high.borrow().0))
2646+
Ok(UniformNotNan(UniformFloat::<$f>::new(
2647+
low.borrow().0,
2648+
high.borrow().0,
2649+
)?))
26472650
}
2648-
fn new_inclusive<B1, B2>(low: B1, high: B2) -> Self
2651+
fn new_inclusive<B1, B2>(low: B1, high: B2) -> Result<Self, Error>
26492652
where
26502653
B1: SampleBorrow<Self::X> + Sized,
26512654
B2: SampleBorrow<Self::X> + Sized,
@@ -2660,14 +2663,17 @@ mod impl_rand {
26602663

26612664
impl UniformSampler for UniformOrdered<$f> {
26622665
type X = OrderedFloat<$f>;
2663-
fn new<B1, B2>(low: B1, high: B2) -> Self
2666+
fn new<B1, B2>(low: B1, high: B2) -> Result<Self, Error>
26642667
where
26652668
B1: SampleBorrow<Self::X> + Sized,
26662669
B2: SampleBorrow<Self::X> + Sized,
26672670
{
2668-
UniformOrdered(UniformFloat::<$f>::new(low.borrow().0, high.borrow().0))
2671+
Ok(UniformOrdered(UniformFloat::<$f>::new(
2672+
low.borrow().0,
2673+
high.borrow().0,
2674+
)?))
26692675
}
2670-
fn new_inclusive<B1, B2>(low: B1, high: B2) -> Self
2676+
fn new_inclusive<B1, B2>(low: B1, high: B2) -> Result<Self, Error>
26712677
where
26722678
B1: SampleBorrow<Self::X> + Sized,
26732679
B2: SampleBorrow<Self::X> + Sized,
@@ -2690,19 +2696,19 @@ mod impl_rand {
26902696

26912697
fn sample_fuzz<T>()
26922698
where
2693-
Standard: Distribution<NotNan<T>>,
2699+
StandardUniform: Distribution<NotNan<T>>,
26942700
Open01: Distribution<NotNan<T>>,
26952701
OpenClosed01: Distribution<NotNan<T>>,
2696-
Standard: Distribution<OrderedFloat<T>>,
2702+
StandardUniform: Distribution<OrderedFloat<T>>,
26972703
Open01: Distribution<OrderedFloat<T>>,
26982704
OpenClosed01: Distribution<OrderedFloat<T>>,
26992705
T: crate::Float,
27002706
{
2701-
let mut rng = rand::thread_rng();
2702-
let f1: NotNan<T> = rng.sample(Standard);
2707+
let mut rng = rand::rng();
2708+
let f1: NotNan<T> = rng.sample(StandardUniform);
27032709
let f2: NotNan<T> = rng.sample(Open01);
27042710
let f3: NotNan<T> = rng.sample(OpenClosed01);
2705-
let _: OrderedFloat<T> = rng.sample(Standard);
2711+
let _: OrderedFloat<T> = rng.sample(StandardUniform);
27062712
let _: OrderedFloat<T> = rng.sample(Open01);
27072713
let _: OrderedFloat<T> = rng.sample(OpenClosed01);
27082714
assert!(!f1.into_inner().is_nan());
@@ -2727,24 +2733,24 @@ mod impl_rand {
27272733
NotNan::new(0f64).unwrap(),
27282734
NotNan::new(f64::INFINITY).unwrap(),
27292735
);
2730-
let uniform = Uniform::new(low, high);
2731-
let _ = uniform.sample(&mut rand::thread_rng());
2736+
let uniform = Uniform::new(low, high).unwrap();
2737+
let _ = uniform.sample(&mut rand::rng());
27322738
}
27332739

27342740
#[test]
27352741
#[should_panic]
27362742
fn uniform_sampling_panic_on_infinity_ordered() {
27372743
let (low, high) = (OrderedFloat(0f64), OrderedFloat(f64::INFINITY));
2738-
let uniform = Uniform::new(low, high);
2739-
let _ = uniform.sample(&mut rand::thread_rng());
2744+
let uniform = Uniform::new(low, high).unwrap();
2745+
let _ = uniform.sample(&mut rand::rng());
27402746
}
27412747

27422748
#[test]
27432749
#[should_panic]
27442750
fn uniform_sampling_panic_on_nan_ordered() {
27452751
let (low, high) = (OrderedFloat(0f64), OrderedFloat(f64::NAN));
2746-
let uniform = Uniform::new(low, high);
2747-
let _ = uniform.sample(&mut rand::thread_rng());
2752+
let uniform = Uniform::new(low, high).unwrap();
2753+
let _ = uniform.sample(&mut rand::rng());
27482754
}
27492755
}
27502756
}

0 commit comments

Comments
 (0)