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