Skip to content

Commit ec6a388

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

3 files changed

Lines changed: 94 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: 20 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,14 @@ 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(low.borrow().0, high.borrow().0)?))
26472647
}
2648-
fn new_inclusive<B1, B2>(low: B1, high: B2) -> Self
2648+
fn new_inclusive<B1, B2>(low: B1, high: B2) -> Result<Self, Error>
26492649
where
26502650
B1: SampleBorrow<Self::X> + Sized,
26512651
B2: SampleBorrow<Self::X> + Sized,
@@ -2660,14 +2660,14 @@ mod impl_rand {
26602660

26612661
impl UniformSampler for UniformOrdered<$f> {
26622662
type X = OrderedFloat<$f>;
2663-
fn new<B1, B2>(low: B1, high: B2) -> Self
2663+
fn new<B1, B2>(low: B1, high: B2) -> Result<Self, Error>
26642664
where
26652665
B1: SampleBorrow<Self::X> + Sized,
26662666
B2: SampleBorrow<Self::X> + Sized,
26672667
{
2668-
UniformOrdered(UniformFloat::<$f>::new(low.borrow().0, high.borrow().0))
2668+
Ok(UniformOrdered(UniformFloat::<$f>::new(low.borrow().0, high.borrow().0)?))
26692669
}
2670-
fn new_inclusive<B1, B2>(low: B1, high: B2) -> Self
2670+
fn new_inclusive<B1, B2>(low: B1, high: B2) -> Result<Self, Error>
26712671
where
26722672
B1: SampleBorrow<Self::X> + Sized,
26732673
B2: SampleBorrow<Self::X> + Sized,
@@ -2690,19 +2690,19 @@ mod impl_rand {
26902690

26912691
fn sample_fuzz<T>()
26922692
where
2693-
Standard: Distribution<NotNan<T>>,
2693+
StandardUniform: Distribution<NotNan<T>>,
26942694
Open01: Distribution<NotNan<T>>,
26952695
OpenClosed01: Distribution<NotNan<T>>,
2696-
Standard: Distribution<OrderedFloat<T>>,
2696+
StandardUniform: Distribution<OrderedFloat<T>>,
26972697
Open01: Distribution<OrderedFloat<T>>,
26982698
OpenClosed01: Distribution<OrderedFloat<T>>,
26992699
T: crate::Float,
27002700
{
2701-
let mut rng = rand::thread_rng();
2702-
let f1: NotNan<T> = rng.sample(Standard);
2701+
let mut rng = rand::rng();
2702+
let f1: NotNan<T> = rng.sample(StandardUniform);
27032703
let f2: NotNan<T> = rng.sample(Open01);
27042704
let f3: NotNan<T> = rng.sample(OpenClosed01);
2705-
let _: OrderedFloat<T> = rng.sample(Standard);
2705+
let _: OrderedFloat<T> = rng.sample(StandardUniform);
27062706
let _: OrderedFloat<T> = rng.sample(Open01);
27072707
let _: OrderedFloat<T> = rng.sample(OpenClosed01);
27082708
assert!(!f1.into_inner().is_nan());
@@ -2727,24 +2727,24 @@ mod impl_rand {
27272727
NotNan::new(0f64).unwrap(),
27282728
NotNan::new(f64::INFINITY).unwrap(),
27292729
);
2730-
let uniform = Uniform::new(low, high);
2731-
let _ = uniform.sample(&mut rand::thread_rng());
2730+
let uniform = Uniform::new(low, high).unwrap();
2731+
let _ = uniform.sample(&mut rand::rng());
27322732
}
27332733

27342734
#[test]
27352735
#[should_panic]
27362736
fn uniform_sampling_panic_on_infinity_ordered() {
27372737
let (low, high) = (OrderedFloat(0f64), OrderedFloat(f64::INFINITY));
2738-
let uniform = Uniform::new(low, high);
2739-
let _ = uniform.sample(&mut rand::thread_rng());
2738+
let uniform = Uniform::new(low, high).unwrap();
2739+
let _ = uniform.sample(&mut rand::rng());
27402740
}
27412741

27422742
#[test]
27432743
#[should_panic]
27442744
fn uniform_sampling_panic_on_nan_ordered() {
27452745
let (low, high) = (OrderedFloat(0f64), OrderedFloat(f64::NAN));
2746-
let uniform = Uniform::new(low, high);
2747-
let _ = uniform.sample(&mut rand::thread_rng());
2746+
let uniform = Uniform::new(low, high).unwrap();
2747+
let _ = uniform.sample(&mut rand::rng());
27482748
}
27492749
}
27502750
}

0 commit comments

Comments
 (0)