impl serde for rand_distr::WeightedAliasIndex; fix bounds for Uniform

This commit is contained in:
Diggory Hardy
2021-07-08 15:09:53 +01:00
parent b9f0c54a2c
commit 9bd8017e20
3 changed files with 8 additions and 1 deletions
+1 -1
View File
@@ -20,7 +20,7 @@ default = ["std"]
std = ["alloc", "rand/std"]
alloc = ["rand/alloc"]
std_math = ["num-traits/std"]
serde1 = ["serde"]
serde1 = ["serde", "rand/serde1"]
[dependencies]
rand = { path = "..", version = "0.8.0", default-features = false }
+5
View File
@@ -16,6 +16,8 @@ use core::iter::Sum;
use core::ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Sub, SubAssign};
use rand::Rng;
use alloc::{boxed::Box, vec, vec::Vec};
#[cfg(feature = "serde1")]
use serde::{Serialize, Deserialize};
/// A distribution using weighted sampling to pick a discretely selected item.
///
@@ -64,6 +66,9 @@ use alloc::{boxed::Box, vec, vec::Vec};
/// [`Uniform<u32>::sample`]: Distribution::sample
/// [`Uniform<W>::sample`]: Distribution::sample
#[cfg_attr(doc_cfg, doc(cfg(feature = "alloc")))]
#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "serde1", serde(bound(serialize = "W: Serialize, W::Sampler: Serialize")))]
#[cfg_attr(feature = "serde1", serde(bound(deserialize = "W: Deserialize<'de>, W::Sampler: Deserialize<'de>")))]
pub struct WeightedAliasIndex<W: AliasableWeight> {
aliases: Box<[u32]>,
no_alias_odds: Box<[W]>,
+2
View File
@@ -172,6 +172,8 @@ use serde::{Serialize, Deserialize};
/// [`Rng::gen_range`]: Rng::gen_range
#[derive(Clone, Copy, Debug)]
#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "serde1", serde(bound(serialize = "X::Sampler: Serialize")))]
#[cfg_attr(feature = "serde1", serde(bound(deserialize = "X::Sampler: Deserialize<'de>")))]
pub struct Uniform<X: SampleUniform>(X::Sampler);
impl<X: SampleUniform> Uniform<X> {