MCPcopy Create free account
hub / github.com/apache/arrow-rs / append_n

Method append_n

arrow-buffer/src/builder/boolean.rs:191–212  ·  view source on GitHub ↗
(&mut self, additional: usize, v: bool)

Source from the content-addressed store, hash-verified

189 /// Appends n `additional` bits of value `v` into the buffer
190 #[inline]
191 pub fn append_n(&mut self, additional: usize, v: bool) {
192 match v {
193 true => {
194 let new_len = self.len + additional;
195 let new_len_bytes = bit_util::ceil(new_len, 8);
196 let cur_remainder = self.len % 8;
197 let new_remainder = new_len % 8;
198
199 if cur_remainder != 0 {
200 // Pad last byte with 1s
201 *self.buffer.as_slice_mut().last_mut().unwrap() |= !((1 << cur_remainder) - 1)
202 }
203 self.buffer.resize(new_len_bytes, 0xFF);
204 if new_remainder != 0 {
205 // Clear remaining bits
206 *self.buffer.as_slice_mut().last_mut().unwrap() &= (1 << new_remainder) - 1
207 }
208 self.len = new_len;
209 }
210 false => self.advance(additional),
211 }
212 }
213
214 /// Appends a slice of booleans into the buffer
215 #[inline]

Calls 4

ceilFunction · 0.50
as_slice_mutMethod · 0.45
resizeMethod · 0.45
advanceMethod · 0.45