use inquire::{ error::InquireResult, min_length, Confirm, DateSelect, MultiSelect, Password, Select, Text, }; fn main() -> InquireResult<()> { let fruits = vec![ "Banana", "Apple", "Strawberry", "Grapes", "Lemon", "Tangerine", "Watermelon", "Orange", "Pear", "Avocado", "Pineapple", ]; let pineapple_index = fruits.len() - 1; let languages = vec![ "C++", "Rust", "C", "Python", "Java", "TypeScript", "JavaScript", "Go", ]; let _workplace = Text::new("Where do you work?") .with_help_message("Don't worry, this will not be sold to third-party advertisers.") .with_validator(min_length!(5, "Minimum of 5 characters")) .with_default("Unemployed") .prompt_skippable()?; let _eats_pineapple = MultiSelect::new("What are your favorite fruits?", fruits) .raw_prompt()? .into_iter() .any(|o| o.index == pineapple_index); let _eats_pizza = Confirm::new("Do you eat pizza?") .with_default(true) .prompt_skippable()?; let _language = Select::new("What is your favorite programming language?", languages).prompt_skippable()?; let _password = Password::new("Password:") .with_validator(min_length!(8, "Minimum of 8 characters")) .prompt_skippable()?; let _when = DateSelect::new("When are you going to travel?").prompt_skippable()?; println!("Based on our ML-powered analysis, we were able to conclude absolutely nothing."); Ok(()) }