use crate::{
misc::LeaseMut as _,
rng::{CryptoSeedableRng, Rng, Xorshift64, simple_seed},
};
pub trait SeedableRng: CryptoSeedableRng {
#[inline]
fn from_simple_seed() -> crate::Result<Self> {
let mut seed = Self::Seed::default();
Xorshift64::from(simple_seed()).fill_slice(seed.lease_mut());
Self::from_seed(seed)
}
#[inline]
fn from_rng<R>(rng: &mut R) -> crate::Result<Self>
where
R: Rng,
{
let mut seed = Self::Seed::default();
rng.fill_slice(seed.lease_mut());
Self::from_seed(seed)
}
}