fast_able/
cache_queue.rs

1use std::fmt::Debug;
2
3/*
4缓存队列, 可一边缓存数据, 一边使用数据, 缓存满时, 自动覆盖最旧的数据
5*/
6pub struct CacheQueue<T, const L: usize> {
7    data: [T; L],
8    add: usize,
9    useed: usize,
10}
11
12impl<T: Default, const L: usize> CacheQueue<T, L> {
13    pub fn new() -> Self {
14        let data = std::array::from_fn(|_| T::default());
15        CacheQueue {
16            data: data,
17            add: 0,
18            useed: 0,
19        }
20    }
21}
22
23impl<T, const L: usize> CacheQueue<T, L> {
24    pub fn push(&mut self, t: T) {
25        self.data[self.add] = t;
26        self.add += 1;
27        if self.add >= L {
28            self.add = 0;
29        }
30    }
31}