From 4a01bd5faae893682e7011632bdda8f12c96ef49 Mon Sep 17 00:00:00 2001 From: notohh Date: Mon, 3 Jun 2024 11:29:20 -0400 Subject: [PATCH] make symbols optional --- src/args.rs | 2 ++ src/randomstring.rs | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/args.rs b/src/args.rs index af01412..c659651 100644 --- a/src/args.rs +++ b/src/args.rs @@ -5,6 +5,8 @@ pub struct Args { #[arg(short, default_value_t = 16)] pub length: usize, #[arg(short)] + pub symbols: bool, + #[arg(short)] pub write_to_file: bool, #[arg(short, default_value_t = String::from("generated_pwd.txt"))] pub file: String, diff --git a/src/randomstring.rs b/src/randomstring.rs index fef5053..f35f1bb 100644 --- a/src/randomstring.rs +++ b/src/randomstring.rs @@ -1,5 +1,5 @@ use clap::Parser; -use rand::Rng; +use rand::{distributions::Alphanumeric, Rng}; use std::iter; use crate::Args; @@ -15,8 +15,16 @@ impl RandomString { let mut rng = rand::thread_rng(); let char = || CHARSET[rng.gen_range(0..CHARSET.len())] as char; - let s: String = iter::repeat_with(char).take(args.length).collect(); - - s + if args.symbols { + let s: String = iter::repeat_with(char).take(args.length).collect(); + s + } else { + let s: String = rng + .sample_iter(&Alphanumeric) + .take(args.length) + .map(char::from) + .collect(); + s + } } }