Files
smartcore/src/rand_custom.rs
morenol 9eaae9ef35 Fixes for release (#237)
* Fixes for release
* add new test
* Remove change applied in development branch
* Only add dependency for wasm32
* Update ci.yml

Co-authored-by: Luis Moreno <morenol@users.noreply.github.com>
Co-authored-by: Lorenzo <tunedconsulting@gmail.com>
2022-11-08 16:07:14 +00:00

34 lines
1.1 KiB
Rust

#[cfg(not(feature = "std_rand"))]
pub use rand::rngs::SmallRng as RngImpl;
#[cfg(feature = "std_rand")]
pub use rand::rngs::StdRng as RngImpl;
use rand::SeedableRng;
/// Custom switch for random fuctions
pub fn get_rng_impl(seed: Option<u64>) -> RngImpl {
match seed {
Some(seed) => RngImpl::seed_from_u64(seed),
None => {
cfg_if::cfg_if! {
if #[cfg(feature = "std_rand")] {
use rand::RngCore;
RngImpl::seed_from_u64(rand::thread_rng().next_u64())
} else {
// no std_random feature build, use getrandom
#[cfg(feature = "js")]
{
let mut buf = [0u8; 64];
getrandom::getrandom(&mut buf).unwrap();
RngImpl::seed_from_u64(buf[0] as u64)
}
#[cfg(not(feature = "js"))]
{
// Using 0 as default seed
RngImpl::seed_from_u64(0)
}
}
}
}
}
}