pub const GEN_PWD: fn(_: usize, _: usize, _: usize) -> String = |l, s, n| {
// l: amount of letters [A-Z,a-z], say length - symbol - number
// s: amount of symbols, say symbol
// n: amount of numbers [0-9], say number
let mut rng = rand::thread_rng();
let data = _DATA();
let mut PWD =
vec![
(l, data.0),
(s, data.1),
(n, data.2),
]
.iter()
.map(|args| {
_RAND_IDX(args.0, args.1.len()) // generate the random index on corresponding Vec depend on its amount
.iter()
.map(|idx| args.1[*idx].clone())// index their values in to Vec<String>
.collect()
})
.fold(vec![], |mut acc, mut x| { acc.append(&mut x); acc });
// unfold these Vec<Vec<String>> in to Vec<String>
PWD.shuffle(&mut rng);
PWD.join("")
}; // {<[closure@src/lib.rs:36:56: 60:2] as std::ops::FnOnce<(usize, usize, usize)>>::call_once as fn(usize, usize, usize) -> std::string::String}