npwg 0.5.1

Securely generate random passwords
Documentation
use npwg::generator::generate_with_pattern;

fn main() {
    let available_chars: Vec<char> = "abcdefg".chars().collect();
    let pattern = "LDLS";
    let length = 10;
    let seed = None;

    match generate_with_pattern(pattern, &available_chars, length, seed) {
        Ok(password) => {
            println!("Password generated: {}", password);
            println!("Password length: {}", password.len());

            let all_valid = password.chars().all(|c| available_chars.contains(&c));
            println!("All characters valid: {}", all_valid);

            let contains_digits = password.chars().any(|c| c.is_ascii_digit());
            println!("Contains digits: {} (should be false)", contains_digits);

            assert!(all_valid, "Password should only contain valid characters");
            assert!(!contains_digits, "Password should not contain digits");
            println!("Tests passed!");
        }
        Err(e) => println!("Error: {:?}", e),
    }
}