impl serde for rand_distr::WeightedAliasIndex; fix bounds for Uniform
This commit is contained in:
@@ -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 }
|
||||
|
||||
@@ -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]>,
|
||||
|
||||
@@ -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> {
|
||||
|
||||
Reference in New Issue
Block a user