// Sample Rust program — samplefiles.com
#[derive(Debug, Clone)]
struct Customer {
    id: u32,
    name: String,
    balance: f64,
}

impl Customer {
    fn new(id: u32, name: &str, balance: f64) -> Self {
        Self { id, name: name.to_string(), balance }
    }

    fn is_vip(&self) -> bool {
        self.balance >= 10_000.0
    }
}

fn total_balance(customers: &[Customer]) -> f64 {
    customers.iter().map(|c| c.balance).sum()
}

fn main() {
    let customers = vec![Customer::new(1, "Ada", 12_500.0), Customer::new(2, "Grace", 830.5), Customer::new(3, "Linus", 10_000.0)];
    for c in &customers {
        println!("{:<6} {:>10.2} {}", c.name, c.balance, if c.is_vip() { "VIP" } else { "" });
    }
    println!("Total: {:.2}", total_balance(&customers));
}
