mix 0.2.1

mix - a rust ui library cooked up in half a day! (expect extra salt)
use std::time::{Duration, Instant};

#[derive(Clone, Debug)]
pub struct PerformanceStats {
    pub frame_count: usize,
    pub frame_time: Duration,
    pub frame_times: Vec<Duration>,
    pub last_frame_time: Instant,
    pub fps: f32,
}

impl PerformanceStats {
    pub fn new() -> Self {
        Self {
            frame_count: 0,
            frame_time: Duration::from_secs(0),
            frame_times: Vec::with_capacity(60),
            last_frame_time: Instant::now(),
            fps: 0.0,
        }
    }
    
    pub fn update(&mut self) {
        let now = Instant::now();
        let frame_time = now - self.last_frame_time;
        self.last_frame_time = now;
        
        self.frame_time = frame_time;
        self.frame_count += 1;
        
        self.frame_times.push(frame_time);
        if self.frame_times.len() > 60 {
            self.frame_times.remove(0);
        }
        
        let total_time: Duration = self.frame_times.iter().sum();
        let avg_time = total_time.as_secs_f32() / self.frame_times.len() as f32;
        self.fps = if avg_time > 0.0 { 1.0 / avg_time } else { 0.0 };
    }
}