nurtex_protocol/types/
bit_set.rs1use nurtex_codec::Buffer;
2use nurtex_codec::types::variable::VarI32;
3
4#[derive(Clone, Debug, PartialEq)]
6pub struct BitSet(Vec<i64>);
7
8impl BitSet {
9 pub fn get(&self) -> &Vec<i64> {
11 &self.0
12 }
13}
14
15impl Buffer for BitSet {
16 fn read_buf(buffer: &mut std::io::Cursor<&[u8]>) -> Option<Self> {
17 let len = i32::read_var(buffer)? as usize;
18 let mut set = Vec::with_capacity(len);
19
20 for _ in 0..len {
21 set.push(i64::read_buf(buffer)?);
22 }
23
24 Some(Self(set))
25 }
26
27 fn write_buf(&self, buffer: &mut impl std::io::Write) -> std::io::Result<()> {
28 (self.0.len() as i32).write_var(buffer)?;
29
30 for el in &self.0 {
31 el.write_buf(buffer)?;
32 }
33
34 Ok(())
35 }
36}