1use anyhow::Error;
2use std::collections::VecDeque;
3
4const DEFAULT_LIMIT: usize = 8;
5
6pub struct Failures {
8 limit: usize,
9 errors: VecDeque<Error>,
10}
11
12impl Failures {
13 pub fn new(limit: usize) -> Self {
14 Self {
15 limit,
16 errors: VecDeque::with_capacity(limit),
17 }
18 }
19}
20
21impl Default for Failures {
22 fn default() -> Self {
23 Self::new(DEFAULT_LIMIT)
24 }
25}
26
27impl Failures {
28 pub fn put(&mut self, res: Result<(), Error>) {
29 if self.errors.len() >= self.limit {
30 self.errors.pop_front();
31 }
32 if let Err(err) = res {
33 self.errors.push_back(err);
34 }
35 }
36}