fast_able/
cache_queue.rs

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