use clap::Args;
use rand::{Rng, thread_rng};
#[derive(Args)]
pub struct PwCmd {
#[arg(short = 'l', long, help = "密码长度", default_value = "16")]
pub length: usize,
}
impl PwCmd {
pub fn execute(&self) {
println!("{}", self.generate());
}
fn generate(&self) -> String {
const CHARSET: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZ\
abcdefghijklmnopqrstuvwxyz\
0123456789";
let mut rng = thread_rng();
let password: String = (0..self.length)
.map(|_| {
let idx = rng.gen_range(0..CHARSET.len());
CHARSET[idx] as char
})
.collect();
password
}
}