use crate::{Rng, Uncertain};
use std::marker::PhantomData;
pub struct Distribution<T, D>
where
D: rand::distributions::Distribution<T>,
{
dist: D,
_p: PhantomData<T>,
}
impl<T, D> Uncertain for Distribution<T, D>
where
D: rand::distributions::Distribution<T>,
{
type Value = T;
fn sample(&self, rng: &mut Rng, _epoch: usize) -> Self::Value {
self.dist.sample(rng)
}
}
impl<T, D> From<D> for Distribution<T, D>
where
D: rand::distributions::Distribution<T>,
{
fn from(dist: D) -> Self {
Self {
dist,
_p: PhantomData {},
}
}
}