diff --git a/src/array/primitive/mutable.rs b/src/array/primitive/mutable.rs index ee330188126..f9b2f572a70 100644 --- a/src/array/primitive/mutable.rs +++ b/src/array/primitive/mutable.rs @@ -164,8 +164,8 @@ impl MutablePrimitiveArray { if let Some(validity) = self.validity.as_mut() { extend_trusted_len_unzip(iterator, validity, &mut self.values) } else { - let mut validity = - MutableBitmap::from_trusted_len_iter(std::iter::repeat(true).take(self.len())); + let mut validity = MutableBitmap::new(); + validity.extend_constant(self.len(), true); extend_trusted_len_unzip(iterator, &mut validity, &mut self.values); if validity.null_count() > 0 { self.validity = Some(validity); @@ -449,10 +449,10 @@ pub(crate) unsafe fn extend_trusted_len_unzip( I: Iterator>, { let (_, upper) = iterator.size_hint(); - let len = upper.expect("trusted_len_unzip requires an upper limit"); + let additional = upper.expect("trusted_len_unzip requires an upper limit"); - validity.reserve(len); - buffer.reserve(len); + validity.reserve(additional); + buffer.reserve(additional); for item in iterator { let item = if let Some(item) = item { diff --git a/src/bitmap/mutable.rs b/src/bitmap/mutable.rs index d3eae6689e5..4826ef7872c 100644 --- a/src/bitmap/mutable.rs +++ b/src/bitmap/mutable.rs @@ -98,10 +98,8 @@ impl MutableBitmap { if self.length % 8 == 0 { self.buffer.push_unchecked(0); } - if value { - let byte = self.buffer.as_mut_slice().last_mut().unwrap(); - *byte = set(*byte, self.length % 8, true); - }; + let byte = self.buffer.as_mut_slice().last_mut().unwrap(); + *byte = set(*byte, self.length % 8, value); self.length += 1; }