use std::collections::VecDeque;
pub struct Logger {
logs: VecDeque<String>,
pub capacity: usize,
}
impl Logger {
pub fn new(capacity: usize) -> Self {
Logger {
logs: VecDeque::with_capacity(if capacity == 0 { 1 } else { capacity }), capacity
}
}
pub fn log_action(&mut self, action_details: String) {
if self.capacity == 0 {
return; }
if self.logs.len() == self.capacity {
self.logs.pop_front(); }
self.logs.push_back(action_details); }
pub fn get_logs(&self) -> Vec<String> {
self.logs.iter().cloned().collect() }
pub fn clear_logs(&mut self) {
self.logs.clear();
}
}