Skip to content

Commit 2b35969

Browse files
committed
Address PR feedback.
1 parent 304c8f5 commit 2b35969

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

arrow-buffer/src/buffer/null.rs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,11 @@ impl NullBuffer {
8787
/// Computes the union of the nulls in multiple optional [`NullBuffer`]s
8888
///
8989
/// See [`union`](Self::union)
90-
pub fn union_many(nulls: &[Option<&NullBuffer>]) -> Option<NullBuffer> {
90+
pub fn union_many<'a>(
91+
nulls: impl IntoIterator<Item = Option<&'a NullBuffer>>,
92+
) -> Option<NullBuffer> {
9193
// Unwrap to BooleanBuffer because BitAndAssign is not implemented for NullBuffer
92-
let mut buffers = nulls.iter().filter_map(|nb| nb.map(NullBuffer::inner));
94+
let mut buffers = nulls.into_iter().filter_map(|nb| nb.map(NullBuffer::inner));
9395
let first = buffers.next()?;
9496
let mut result = first.clone();
9597
for buf in buffers {
@@ -353,22 +355,22 @@ mod tests {
353355

354356
#[test]
355357
fn test_union_many_all_none() {
356-
let result = NullBuffer::union_many(&[None, None, None]);
358+
let result = NullBuffer::union_many([None, None, None]);
357359
assert!(result.is_none());
358360
}
359361

360362
#[test]
361363
fn test_union_many_single_some() {
362364
let a = NullBuffer::from(&[true, false, true, true]);
363-
let result = NullBuffer::union_many(&[Some(&a)]);
365+
let result = NullBuffer::union_many([Some(&a)]);
364366
assert_eq!(result, Some(a));
365367
}
366368

367369
#[test]
368370
fn test_union_many_two_inputs() {
369371
let a = NullBuffer::from(&[true, false, true, true]);
370372
let b = NullBuffer::from(&[true, true, false, true]);
371-
let result = NullBuffer::union_many(&[Some(&a), Some(&b)]);
373+
let result = NullBuffer::union_many([Some(&a), Some(&b)]);
372374
let expected = NullBuffer::union(Some(&a), Some(&b));
373375
assert_eq!(result, expected);
374376
}
@@ -378,7 +380,7 @@ mod tests {
378380
let a = NullBuffer::from(&[true, false, true, true]);
379381
let b = NullBuffer::from(&[true, true, false, true]);
380382
let c = NullBuffer::from(&[false, true, true, true]);
381-
let result = NullBuffer::union_many(&[Some(&a), Some(&b), Some(&c)]);
383+
let result = NullBuffer::union_many([Some(&a), Some(&b), Some(&c)]);
382384
let expected = NullBuffer::from(&[false, false, false, true]);
383385
assert_eq!(result, Some(expected));
384386
}
@@ -387,14 +389,14 @@ mod tests {
387389
fn test_union_many_mixed_none() {
388390
let a = NullBuffer::from(&[true, false, true, true]);
389391
let b = NullBuffer::from(&[false, true, true, true]);
390-
let result = NullBuffer::union_many(&[Some(&a), None, Some(&b)]);
392+
let result = NullBuffer::union_many([Some(&a), None, Some(&b)]);
391393
let expected = NullBuffer::union(Some(&a), Some(&b));
392394
assert_eq!(result, expected);
393395
}
394396

395397
#[test]
396398
fn test_union_many_empty_slice() {
397-
let result = NullBuffer::union_many(&[]);
399+
let result = NullBuffer::union_many([] as [Option<&NullBuffer>; 0]);
398400
assert!(result.is_none());
399401
}
400402
}

0 commit comments

Comments
 (0)