crb_runtime/
error.rs

1use anyhow::Error;
2use std::collections::VecDeque;
3
4const DEFAULT_LIMIT: usize = 8;
5
6// TODO: Consider removing
7pub 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}