modcli/output/input/
password.rs1use rpassword::read_password;
2
3pub fn prompt_password(message: &str) -> String {
4 prompt_password_with_validation(message, |_| Ok(()))
5}
6
7pub fn prompt_password_with_validation<F>(message: &str, validator: F) -> String
8where
9 F: Fn(&str) -> Result<(), &str>,
10{
11 loop {
12 print!("{}: ", message);
13 std::io::Write::flush(&mut std::io::stdout()).unwrap();
14 let password = read_password().unwrap();
15
16 match validator(password.trim()) {
17 Ok(_) => return password.trim().to_string(),
18 Err(err) => {
19 println!("Invalid password: {}", err);
20 }
21 }
22 }
23}