1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
use std::fmt::{Display, Formatter};
use inquire::error::InquireResult;
use inquire_derive::Selectable;
fn main() -> InquireResult<()> {
println!("=== Currency Selection Example ===\n");
// Example using single select
println!("1. Select your primary currency:");
let currency: Currency = Currency::select("Currency:").prompt()?;
match currency {
Currency::BRL | Currency::USD | Currency::CAD | Currency::EUR | Currency::GBP => {
bank_transfer(¤cy);
}
Currency::BTC | Currency::LTC => crypto_transfer(¤cy),
}
// Example using multi_select with customization
println!("\n2. Select multiple currencies for comparison:");
let selected_currencies: Vec<Currency> = Currency::multi_select("Select multiple currencies:")
.with_help_message("Use space to select, enter to confirm")
.with_page_size(5)
.prompt()?;
if selected_currencies.is_empty() {
println!("No currencies selected for comparison.");
} else {
println!(
"You selected {} currencies for comparison:",
selected_currencies.len()
);
for currency in selected_currencies {
println!(" - {currency}");
}
}
Ok(())
}
fn bank_transfer(currency: &Currency) {
println!("Setting up bank transfer for {currency}...");
println!("Bank transfer configured!");
}
fn crypto_transfer(currency: &Currency) {
println!("Setting up crypto wallet for {currency}...");
println!("Crypto wallet configured!");
}
#[derive(Debug, Copy, Clone, Selectable)]
#[allow(clippy::upper_case_acronyms)]
enum Currency {
BRL,
USD,
CAD,
EUR,
GBP,
BTC,
LTC,
}
impl Display for Currency {
fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), std::fmt::Error> {
match self {
Currency::BRL => write!(f, "π§π· Brazilian Real (BRL)"),
Currency::USD => write!(f, "πΊπΈ US Dollar (USD)"),
Currency::CAD => write!(f, "π¨π¦ Canadian Dollar (CAD)"),
Currency::EUR => write!(f, "πͺπΊ Euro (EUR)"),
Currency::GBP => write!(f, "π¬π§ British Pound (GBP)"),
Currency::BTC => write!(f, "βΏ Bitcoin (BTC)"),
Currency::LTC => write!(f, "Ε Litecoin (LTC)"),
}
}
}
|