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}