diff --git a/src/main.rs b/src/main.rs index 7ab778d..302798a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,7 +2,7 @@ mod bst; mod stack; mod sort; -use clap::{Parser, Subcommand}; +use clap::{Args, Parser, Subcommand}; use rand::Rng; use bst::BinarySearchTree; use stack::Stack; @@ -17,7 +17,16 @@ struct Cli { #[derive(Subcommand, Debug)] enum Command { Default, - DoRandom, + DoRandom(DoRandomArgs), +} + +#[derive(Args, Debug)] +struct DoRandomArgs { + #[arg(long)] + min: i32, + + #[arg(long)] + max: i32, } struct Greeter { @@ -91,12 +100,12 @@ fn do_default() { println!("sorted chars: {:?}", sorted_chars); } -fn do_random() { +fn do_random(args: &DoRandomArgs) { let mut range = rand::thread_rng(); let mut numbers = [0; 100]; let mut i = 0; while i < numbers.len() { - numbers[i] = range.gen_range(1..100); + numbers[i] = range.gen_range(args.min..args.max); i += 1; } // println!("before sorting: {:?}", numbers); @@ -113,8 +122,8 @@ fn main() { Command::Default => { do_default(); } - Command::DoRandom => { - do_random(); + Command::DoRandom(args) => { + do_random(&args); } } }