diff --git a/Cargo.toml b/Cargo.toml index e941b46..e45c9e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,21 +22,24 @@ structopt = "0.2" pest = "2.0" pest_derive = "2.0" failure = "0.1" -rand = "0.5" +rand = "0.6" data-encoding = "2.1" regex-syntax = "0.6" pbr = "1.0" num-traits = "0.2" rayon = "1.0" -zipf = "4.0.1" +zipf = "5.0" chrono = { version = "0.4", default-features = false } ryu = "0.2" -pcg_rand = "0.9.3" -xoshiro = "0.0.4" serde_derive = "1.0" serde = "1.0" muldiv = "0.2" -rand_regex = "0.11" +rand_regex = "0.12" +rand_pcg = "0.1" +rand_isaac = "0.1" +rand_chacha = "0.1" +rand_hc = "0.1" +rand_xorshift = "0.1" [dev-dependencies] regex = "1.0" diff --git a/src/cli.rs b/src/cli.rs index b837866..d959fd3 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -1,15 +1,5 @@ //! CLI driver of `dbgen`. -// TODO remove these `extern crate` once racer-rust/racer#916 is closed. -extern crate data_encoding; -extern crate failure; -extern crate pbr; -extern crate pcg_rand; -extern crate rand; -extern crate rayon; -extern crate structopt; -extern crate xoshiro; - use crate::{ eval::{Row, State}, format::{Format, SqlFormat}, @@ -20,7 +10,10 @@ use data_encoding::{DecodeError, DecodeKind, HEXLOWER_PERMISSIVE}; use failure::{Error, Fail, ResultExt}; use muldiv::MulDiv; use pbr::{MultiBar, Units}; -use rand::{prng, EntropyRng, Rng, RngCore, SeedableRng, StdRng}; +use rand::{ + rngs::{EntropyRng, StdRng}, + Rng, RngCore, SeedableRng, +}; use rayon::{ iter::{IntoParallelIterator, ParallelIterator}, ThreadPoolBuilder, @@ -270,10 +263,8 @@ pub enum RngName { Isaac64, /// Xorshift XorShift, - /// PCG32-Oneseq + /// PCG32 Pcg32, - /// xoshiro256** - Xoshiro256StarStar, } impl FromStr for RngName { @@ -286,7 +277,6 @@ impl FromStr for RngName { "isaac64" => RngName::Isaac64, "xorshift" => RngName::XorShift, "pcg32" => RngName::Pcg32, - "xoshiro256**" => RngName::Xoshiro256StarStar, _ => failure::bail!("Unsupported RNG {}", name), }) } @@ -295,17 +285,13 @@ impl FromStr for RngName { impl RngName { /// Creates an RNG engine given the name. The RNG engine instance will be seeded from `src`. fn create(self, src: &mut StdRng) -> Box { - use pcg_rand::{seeds::PcgSeeder, Pcg32Oneseq}; - use xoshiro::Xoshiro256StarStar; - match self { - RngName::ChaCha => Box::new(prng::ChaChaRng::from_seed(src.gen())), - RngName::Hc128 => Box::new(prng::Hc128Rng::from_seed(src.gen())), - RngName::Isaac => Box::new(prng::IsaacRng::from_seed(src.gen())), - RngName::Isaac64 => Box::new(prng::Isaac64Rng::from_seed(src.gen())), - RngName::XorShift => Box::new(prng::XorShiftRng::from_seed(src.gen())), - RngName::Pcg32 => Box::new(Pcg32Oneseq::from_seed(PcgSeeder::seed(src.gen()))), - RngName::Xoshiro256StarStar => Box::new(Xoshiro256StarStar::from_seed(src.gen())), + RngName::ChaCha => Box::new(rand_chacha::ChaChaRng::from_seed(src.gen())), + RngName::Hc128 => Box::new(rand_hc::Hc128Rng::from_seed(src.gen())), + RngName::Isaac => Box::new(rand_isaac::IsaacRng::from_seed(src.gen())), + RngName::Isaac64 => Box::new(rand_isaac::Isaac64Rng::from_seed(src.gen())), + RngName::XorShift => Box::new(rand_xorshift::XorShiftRng::from_seed(src.gen())), + RngName::Pcg32 => Box::new(rand_pcg::Pcg32::from_seed(src.gen())), } } } diff --git a/src/eval.rs b/src/eval.rs index b77854e..3512de8 100644 --- a/src/eval.rs +++ b/src/eval.rs @@ -333,15 +333,15 @@ pub fn compile_function(name: Function, args: &[impl AsValue]) -> Result { - let lower = arg(name, args, 0, None)?; - let upper = arg(name, args, 1, None)?; + let lower = arg::(name, args, 0, None)?; + let upper = arg::(name, args, 1, None)?; require!(lower < upper, "{} < {}", lower, upper); Ok(Compiled(C::RandUniformF64(Uniform::new(lower, upper)))) } Function::RandUniformInclusive => { - let lower = arg(name, args, 0, None)?; - let upper = arg(name, args, 1, None)?; + let lower = arg::(name, args, 0, None)?; + let upper = arg::(name, args, 1, None)?; require!(lower <= upper, "{} <= {}", lower, upper); Ok(Compiled(C::RandUniformF64(Uniform::new_inclusive(lower, upper)))) } diff --git a/src/lib.rs b/src/lib.rs index 928c6aa..98b7491 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,23 +11,10 @@ rust_2018_idioms ) )] -#![cfg_attr(feature = "cargo-clippy", allow(clippy::stutter, unused_extern_crates))] +#![cfg_attr(feature = "cargo-clippy", allow(clippy::stutter))] //! The reusable library powering `dbgen`. -// TODO remove these `extern crate` once racer-rust/racer#916 is closed. -extern crate chrono; -extern crate data_encoding; -extern crate failure; -extern crate num_traits; -extern crate pest; -extern crate rand; -extern crate rand_regex; -extern crate regex_syntax; -extern crate ryu; -extern crate structopt; -extern crate zipf; - pub mod cli; pub mod error; pub mod eval;