use crate::app::{DrawAction}; use std::collections::VecDeque; pub struct Whiteboard { actions: VecDeque, max_actions: usize, } impl Whiteboard { pub fn new() -> Self { Whiteboard { actions: VecDeque::new(), max_actions: 1000, } } pub fn add_action(&mut self, action: DrawAction) { if self.actions.len() >= self.max_actions { self.actions.pop_front(); } self.actions.push_back(action); } pub fn clear(&mut self) { self.actions.clear(); } pub fn get_actions(&self) -> Vec { self.actions.iter().cloned().collect() } }