async_ecs/misc/bit/
producer.rs1use asparit::{Producer, WithSetup};
2use hibitset::BitSetLike;
3
4use super::BitIter;
5
6pub struct BitProducer<T> {
7 pub iter: BitIter<T>,
8}
9
10impl<T> BitProducer<T> {
11 pub fn new(iter: BitIter<T>) -> Self {
12 Self { iter }
13 }
14}
15
16impl<T> WithSetup for BitProducer<T> {}
17
18impl<T> Producer for BitProducer<T>
19where
20 T: BitSetLike + Copy + Send + Sync,
21{
22 type Item = u32;
23 type IntoIter = BitIter<T>;
24
25 fn into_iter(self) -> Self::IntoIter {
26 self.iter
27 }
28
29 fn split(self) -> (Self, Option<Self>) {
30 let (left, right) = self.iter.split();
31
32 (Self::new(left), right.map(Self::new))
33 }
34}