📄 ex08.rs
/home/palash/git/misc/rust/rust101/src/bin/ex08.rs
Language: rs • Lines: 84
// Topic Enum & Struct

#[derive(Debug)]
enum Flavour {
    Mango,
    Chocolate,
    Strawberry,
    Rose,
}

fn get_flavour_str(f: Flavour) -> String {
    match f {
        Flavour::Mango => String::from("mango"),
        Flavour::Chocolate => String::from("chocolate"),
        Flavour::Strawberry => String::from("strawberry"),
        Flavour::Rose => String::from("rose"),
    }
}

#[derive(Debug)]
enum Size {
    Small,
    Medium,
    Large,
    XL,
    Family,
}

#[derive(Debug)]
enum DrinkType {
    Lasyi,
    Sharbat,
}

#[derive(Debug)]
struct Drink {
    t: DrinkType,
    flavour: Flavour,
}

#[derive(Debug)]
struct Order {
    customer: String,
    drink: Drink,
    size: Size,
    cost: f64,
}

fn print_order(order: Order) {
    println!(
        "{} is drinking {:#?} {} {:#?} worth {} rupees",
        order.customer,
        order.size,
        get_flavour_str(order.drink.flavour),
        order.drink.t,
        order.cost
    )
}

fn main() {
    let order = Order {
        customer: String::from("Sumit"),
        drink: Drink {
            t: DrinkType::Lasyi,
            flavour: Flavour::Mango,
        },
        size: Size::Large,
        cost: 10.0,
    };

    print_order(order);

    let order = Order {
        customer: String::from("Rajat"),
        drink: Drink {
            t: DrinkType::Sharbat,
            flavour: Flavour::Strawberry,
        },
        size: Size::Large,
        cost: 20.0,
    };

    print_order(order);
}