diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/config.rs | 9 | ||||
| -rw-r--r-- | src/main.rs | 6 |
2 files changed, 9 insertions, 6 deletions
diff --git a/src/config.rs b/src/config.rs index 90ac579..23bef3b 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,13 +1,13 @@ use std::{env, fs, path::PathBuf}; use anyhow::{Result, anyhow}; -use rand::{Rng, rngs::ThreadRng}; +use rand::{RngExt, rand_core::UnwrapErr, rngs::SysRng}; use serde::Deserialize; #[derive(Deserialize)] pub struct Quoter { #[serde(skip)] - randomizer: ThreadRng, + randomizer: UnwrapErr<SysRng>, groups: ( (usize, usize), (usize, usize), @@ -32,7 +32,10 @@ impl Quoter { } Ok(self .quotes - .get(self.randomizer.gen_range(l..=r)) + .get( + self.randomizer + .sample(rand::distr::uniform::Uniform::new(l, r + 1)?), + ) .cloned() .unwrap()) } diff --git a/src/main.rs b/src/main.rs index cce7334..a57c99f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -15,7 +15,7 @@ use std::{ use anyhow::Result; use app::App; use clap::Parser; -use rand::{Rng, thread_rng}; +use rand::Rng; use crate::config::{Quote, get_quoter}; @@ -66,8 +66,8 @@ async fn main() -> Result<()> { } else if let Some(q) = &args.quote { let path = Path::new(q); let mut quotes = generate_quotes(path).unwrap(); - let mut rng = thread_rng(); - let chosen = rng.gen_range(0..quotes.len()); + let mut rng = rand::rand_core::UnwrapErr(rand::rngs::SysRng::default()); + let chosen = rng.next_u64() as usize; Quote { text: quotes.remove(chosen), source: None, |
