aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config.rs9
-rw-r--r--src/main.rs6
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,
XMR address: 854DmXNrxULU3ZFJVs4Wc8PFhbq29RhqHhY8W6cdWrtFN3qmooKyyeYPcDzZTNRxphhJ5UzASQfAdEMwSteVqymk28aLhqj