1#[derive(Debug, Default)]
5pub struct CodecScratch {
6 component_changed: Vec<bool>,
7 field_mask: Vec<bool>,
8}
9
10impl CodecScratch {
11 #[must_use]
13 pub fn new() -> Self {
14 Self::default()
15 }
16
17 fn ensure_component_capacity(&mut self, components: usize) {
18 if self.component_changed.len() < components {
19 self.component_changed.resize(components, false);
20 }
21 }
22
23 fn ensure_field_capacity(&mut self, fields: usize) {
24 if self.field_mask.len() < fields {
25 self.field_mask.resize(fields, false);
26 }
27 }
28}
29
30impl CodecScratch {
31 pub(crate) fn component_and_field_masks_mut(
32 &mut self,
33 components: usize,
34 fields: usize,
35 ) -> (&mut [bool], &mut [bool]) {
36 self.ensure_component_capacity(components);
37 self.ensure_field_capacity(fields);
38 let component_changed = &mut self.component_changed[..components];
39 let field_mask = &mut self.field_mask[..fields];
40 (component_changed, field_mask)
41 }
42}