Real-World Data Modeling with Enums
Real-World Data Modeling with Enums
Enums eliminate invalid program states at compile time:
#[derive(Debug)]
enum PaymentMethod {
CreditCard { number: String, exp: String },
WireTransfer { iban: String },
InvoiceNet30 { po_number: u64 },
}
#[derive(Debug)]
struct Order {
order_id: u64,
amount_cents: u64,
payment: PaymentMethod,
}
fn main() {
let order = Order {
order_id: 5001,
amount_cents: 29900,
payment: PaymentMethod::WireTransfer { iban: String::from("DE89370400440532013000") },
};
println!("Recorded order: {:?}", order);
}