From 74889255f143fc091d8ea4baebb122125e7b64f7 Mon Sep 17 00:00:00 2001 From: Matthijs Brobbel Date: Wed, 2 Aug 2023 13:39:45 +0200 Subject: [PATCH] impl `FromIterator` for `MutableBuffer` (#4624) --- arrow-buffer/src/buffer/mutable.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/arrow-buffer/src/buffer/mutable.rs b/arrow-buffer/src/buffer/mutable.rs index 8655bdb89c55..0177582b0b97 100644 --- a/arrow-buffer/src/buffer/mutable.rs +++ b/arrow-buffer/src/buffer/mutable.rs @@ -771,6 +771,14 @@ impl std::iter::FromIterator for MutableBuffer { } } +impl std::iter::FromIterator for MutableBuffer { + fn from_iter>(iter: I) -> Self { + let mut buffer = Self::default(); + buffer.extend_from_iter(iter.into_iter()); + buffer + } +} + #[cfg(test)] mod tests { use super::*; @@ -985,4 +993,11 @@ mod tests { let mut buffer = MutableBuffer::new(0); buffer.set_null_bits(1, usize::MAX); } + + #[test] + fn from_iter() { + let buffer = [1u16, 2, 3, 4].into_iter().collect::(); + assert_eq!(buffer.len(), 4 * mem::size_of::()); + assert_eq!(buffer.as_slice(), &[1, 0, 2, 0, 3, 0, 4, 0]); + } }