ark_msm/
bitmap.rs

1pub struct Bitmap {
2    size: usize,
3    data: Vec<u32>,
4}
5
6impl Bitmap {
7    pub fn new(size: usize) -> Bitmap {
8        let data = vec![0; size];
9        Bitmap { size, data }
10    }
11
12    pub fn test_and_set(&mut self, bucket: u32) -> bool {
13        let word = bucket >> 5;
14        let bit = 1 << (bucket & 0x1F);
15
16        if (self.data[word as usize] & bit) != 0 {
17            return true;
18        }
19        self.data[word as usize] |= bit;
20        return false;
21    }
22
23    pub fn clear(&mut self) {
24        for i in 0..self.size {
25            self.data[i] = 0;
26        }
27    }
28}