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}