| 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] |