budget_tracking/
budget_tracking.rs1use conservation_checker::{ConservationChecker, Phase};
2
3fn main() {
4 let mut budget = ConservationChecker::new();
5
6 budget.register("monthly_budget", 5000.0, 100.0);
8
9 let expenses = [1200.0, 800.0, 1500.0, 900.0, 700.0, 350.0];
10
11 for (i, expense) in expenses.iter().enumerate() {
12 let remaining = budget.current_value("monthly_budget") - expense;
13 budget.update("monthly_budget", remaining);
14 budget.snapshot();
15
16 let phase = budget.phase("monthly_budget");
17 let drift = budget.drift_rate("monthly_budget");
18
19 println!(
20 "Day {}: spent ${:.0}, remaining ${:.0} | phase={:?}, drift={:.1}/day",
21 i + 1,
22 expense,
23 remaining,
24 phase,
25 drift,
26 );
27
28 if phase == Phase::Transitioning {
29 println!(" ⚠️ Budget is depleting fast!");
30 }
31 }
32
33 if !budget.is_conserved("monthly_budget") {
34 println!("\n❌ Budget violated! Over by ${:.0}",
35 budget.initial_value("monthly_budget") - budget.current_value("monthly_budget"));
36 println!(" Violations: {:?}", budget.violations());
37 } else {
38 println!("\n✅ Budget intact with ${:.0} remaining", budget.current_value("monthly_budget"));
39 }
40}