muxado/
window.rs

1use std::cmp;
2
3#[derive(Debug)]
4pub struct Window {
5    max_size: usize,
6    size: usize,
7}
8
9impl Window {
10    pub(crate) fn new(capacity: usize) -> Self {
11        Window {
12            max_size: capacity,
13            size: capacity,
14        }
15    }
16    pub fn inc(&mut self, by: usize) {
17        if by == 0 {
18            return;
19        }
20
21        self.size = cmp::min(self.size + by, self.max_size);
22    }
23
24    pub fn capacity(&self) -> usize {
25        self.size
26    }
27
28    pub fn dec(&mut self, by: usize) -> usize {
29        let actual = cmp::min(self.size, by);
30
31        self.size -= actual;
32
33        actual
34    }
35}