This is an automated email from the ASF dual-hosted git repository.
tustvold pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/master by this push:
new a5d9118c7b Cleanup ArrayData::buffers (#4583)
a5d9118c7b is described below
commit a5d9118c7b420bb413b642cfc024770e38594aab
Author: Raphael Taylor-Davies <[email protected]>
AuthorDate: Tue Aug 1 10:26:46 2023 +0100
Cleanup ArrayData::buffers (#4583)
* Cleanup ArrayData::buffers
* Hide from docs
* Review feedback
---
arrow-data/src/{data/mod.rs => data.rs} | 13 ++---
arrow-data/src/data/buffers.rs | 96 ---------------------------------
2 files changed, 7 insertions(+), 102 deletions(-)
diff --git a/arrow-data/src/data/mod.rs b/arrow-data/src/data.rs
similarity index 99%
rename from arrow-data/src/data/mod.rs
rename to arrow-data/src/data.rs
index 50643b90e8..6ff8a824b2 100644
--- a/arrow-data/src/data/mod.rs
+++ b/arrow-data/src/data.rs
@@ -29,8 +29,10 @@ use std::sync::Arc;
use crate::equal;
-mod buffers;
-pub use buffers::*;
+/// A collection of [`Buffer`]
+#[doc(hidden)]
+#[deprecated(note = "Use [Buffer]")]
+pub type Buffers<'a> = &'a [Buffer];
#[inline]
pub(crate) fn contains_nulls(
@@ -345,10 +347,9 @@ impl ArrayData {
&self.data_type
}
- /// Returns the [`Buffers`] storing data for this [`ArrayData`]
- pub fn buffers(&self) -> Buffers<'_> {
- // In future ArrayData won't store data contiguously as `Vec<Buffer>`
(#1799)
- Buffers::from_slice(&self.buffers)
+ /// Returns the [`Buffer`] storing data for this [`ArrayData`]
+ pub fn buffers(&self) -> &[Buffer] {
+ &self.buffers
}
/// Returns a slice of children [`ArrayData`]. This will be non
diff --git a/arrow-data/src/data/buffers.rs b/arrow-data/src/data/buffers.rs
deleted file mode 100644
index 883e92e36d..0000000000
--- a/arrow-data/src/data/buffers.rs
+++ /dev/null
@@ -1,96 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-use arrow_buffer::Buffer;
-use std::iter::Chain;
-use std::ops::Index;
-
-/// A collection of [`Buffer`]
-#[derive(Debug, Default, Copy, Clone, Eq, PartialEq)]
-pub struct Buffers<'a>([Option<&'a Buffer>; 2]);
-
-impl<'a> Buffers<'a> {
- /// Temporary will be removed once ArrayData does not store `Vec<Buffer>`
directly (#3769)
- pub(crate) fn from_slice(a: &'a [Buffer]) -> Self {
- match a.len() {
- 0 => Self([None, None]),
- 1 => Self([Some(&a[0]), None]),
- _ => Self([Some(&a[0]), Some(&a[1])]),
- }
- }
-
- /// Returns the number of [`Buffer`] in this collection
- #[inline]
- pub fn len(&self) -> usize {
- self.0[0].is_some() as usize + self.0[1].is_some() as usize
- }
-
- /// Returns `true` if this collection is empty
- #[inline]
- pub fn is_empty(&self) -> bool {
- self.0[0].is_none() && self.0[1].is_none()
- }
-
- #[inline]
- pub fn iter(&self) -> IntoIter<'a> {
- self.into_iter()
- }
-
- /// Converts this [`Buffers`] to a `Vec<Buffer>`
- #[inline]
- pub fn to_vec(&self) -> Vec<Buffer> {
- self.iter().cloned().collect()
- }
-}
-
-impl<'a> Index<usize> for Buffers<'a> {
- type Output = &'a Buffer;
-
- #[inline]
- fn index(&self, index: usize) -> &Self::Output {
- self.0[index].as_ref().unwrap()
- }
-}
-
-impl<'a> IntoIterator for Buffers<'a> {
- type Item = &'a Buffer;
- type IntoIter = IntoIter<'a>;
-
- #[inline]
- fn into_iter(self) -> Self::IntoIter {
- IntoIter(self.0[0].into_iter().chain(self.0[1].into_iter()))
- }
-}
-
-type OptionIter<'a> = std::option::IntoIter<&'a Buffer>;
-
-/// [`Iterator`] for [`Buffers`]
-pub struct IntoIter<'a>(Chain<OptionIter<'a>, OptionIter<'a>>);
-
-impl<'a> Iterator for IntoIter<'a> {
- type Item = &'a Buffer;
-
- #[inline]
- fn next(&mut self) -> Option<Self::Item> {
- self.0.next()
- }
-
- #[inline]
- fn size_hint(&self) -> (usize, Option<usize>) {
- self.0.size_hint()
- }
-}