nested_enum_payment/
nested_enum_payment.rs

1use derive_wizard::Wizard;
2
3#[derive(Debug, Wizard)]
4#[allow(unused)]
5struct Order {
6    #[prompt("Enter product name:")]
7    name: String,
8
9    #[prompt("Select payment method:")]
10    payment: PaymentMethod,
11}
12
13#[derive(Debug, Wizard)]
14#[allow(unused)]
15enum PaymentMethod {
16    Cash,
17
18    CreditCard {
19        #[prompt("Card number:")]
20        card_number: String,
21
22        #[prompt("Expiry:")]
23        expiry: String,
24
25        #[prompt("CVV:")]
26        #[mask]
27        cvv: String,
28    },
29
30    BankTransfer {
31        #[prompt("Account number:")]
32        account: String,
33
34        #[prompt("Routing number:")]
35        routing: String,
36    },
37}
38
39fn main() {
40    let order = Order::wizard_builder().build().unwrap();
41    println!("{:#?}", order);
42}