pub struct Reader<R: BufRead> {
reader: R,
header: Header,
decoder: Decoder,
block_decoder: BlockDecoder,
block_data: Vec<u8>,
block_count: usize,
block_cursor: usize,
finished: bool,
}展开描述
一个高层级的 Avro 对象容器文件阅读器。
Reader 从 BufRead 源中拉取块,处理可选的块压缩,并使用内部的 Decoder 将它们逐行解码为 Arrow RecordBatch 值。它实现了
Iterator<Item = Result<RecordBatch, ArrowError>>和RecordBatchReader,保证所有生成批次的模式一致。
字段§
§reader: R§header: Header§decoder: Decoder§block_decoder: BlockDecoder§block_data: Vec<u8>§block_count: usize§block_cursor: usize§finished: bool实现§
Trait 实现§
源文件§impl<R: BufRead> Iterator for Reader<R>
impl<R: BufRead> Iterator for Reader<R>
源文件§fn next_chunk<const N: usize>( &mut self, ) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where Self: Sized,
fn next_chunk<const N: usize>( &mut self, ) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where Self: Sized,
🔬这是一个仅限夜间构建的实验性 API。(
iter_next_chunk)推进迭代器并返回一个包含接下来的
N 个值的数组。阅读更多源文件§fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
🔬这是一个仅限夜间构建的实验性 API。(
iter_advance_by)将迭代器推进
n 个元素。阅读更多1.28.0 · 源文件§fn step_by(self, step: usize) -> StepBy<Self>where Self: Sized,
fn step_by(self, step: usize) -> StepBy<Self>where Self: Sized,
创建一个从同一点开始的迭代器,但每次迭代都按给定步长前进。阅读更多
1.0.0 · 源文件§fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
接受两个迭代器并创建一个按顺序迭代两者的迭代器。阅读更多
1.0.0 · 源文件§fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where Self: Sized, U: IntoIterator,
fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where Self: Sized, U: IntoIterator,
将两个迭代器“打包”成一个对偶迭代器。阅读更多
源文件§fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
🔬这是一个仅限夜间构建的实验性 API。(
iter_intersperse)创建一个新的迭代器,它在原始迭代器的相邻项之间放置一个
separator 的副本。阅读更多源文件§fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
🔬这是一个仅限夜间构建的实验性 API。(
iter_intersperse)创建一个新的迭代器,它在原始迭代器的相邻项之间放置一个由
separator 生成的项。阅读更多1.0.0 · 源文件§fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
创建一个既过滤又映射的迭代器。阅读更多
1.0.0 · 源文件§fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
1.0.0 · 源文件§fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
创建一个基于谓词生成元素的迭代器。阅读更多
1.57.0 · 源文件§fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
创建一个迭代器,它既根据谓词产生元素又进行映射。阅读更多
1.0.0 · 源文件§fn take(self, n: usize) -> Take<Self>where Self: Sized,
fn take(self, n: usize) -> Take<Self>where Self: Sized,
创建一个迭代器,它产生前
n 个元素,如果底层迭代器提前结束则更少。阅读更多源文件§fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
🔬这是一个仅限夜间构建的实验性 API。(
iter_map_windows)源文件§fn try_collect<B>( &mut self, ) -> <<Self::Item as Try>::Residual as Residual<B>>::TryType
fn try_collect<B>( &mut self, ) -> <<Self::Item as Try>::Residual as Residual<B>>::TryType
🔬这是一个仅限夜间构建的实验性 API。(
iterator_try_collect)将迭代器转换为集合(可能失败),如果遇到失败则短路。阅读更多
源文件§fn collect_into<E>(self, collection: &mut E) -> &mut E
fn collect_into<E>(self, collection: &mut E) -> &mut E
🔬这是一个仅限夜间构建的实验性 API。(
iter_collect_into)将迭代器中的所有项收集到一个集合中。阅读更多
源文件§fn is_partitioned<P>(self, predicate: P) -> bool
fn is_partitioned<P>(self, predicate: P) -> bool
🔬这是一个仅限夜间构建的实验性 API。(
iter_is_partitioned)1.27.0 · 源文件§fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
一个迭代器方法,只要函数成功返回就应用它,产生一个单一的最终值。阅读更多
1.27.0 · 源文件§fn try_for_each<F, R>(&mut self, f: F) -> R
fn try_for_each<F, R>(&mut self, f: F) -> R
一个迭代器方法,它对迭代器中的每个项应用一个可能失败的函数,在第一个错误处停止并返回该错误。阅读更多
源文件§fn try_reduce<R>( &mut self, f: impl FnMut(Self::Item, Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
fn try_reduce<R>( &mut self, f: impl FnMut(Self::Item, Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
🔬这是一个仅限夜间构建的实验性 API。(
iterator_try_reduce)通过重复应用归约操作,将元素归约成单个元素。如果闭包返回失败,则立即将失败传播回调用方。阅读更多
源文件§fn try_find<R>( &mut self, f: impl FnMut(&Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
fn try_find<R>( &mut self, f: impl FnMut(&Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
🔬这是一个仅限夜间构建的实验性 API。(
try_find)将函数应用于迭代器的元素,并返回第一个真结果或第一个错误。阅读更多
1.0.0 · 源文件§fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
将一对迭代器转换为一对容器。阅读更多
源文件§fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where Self: Sized,
fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where Self: Sized,
🔬这是一个仅限夜间构建的实验性 API。(
iter_array_chunks)返回一个迭代器,它一次迭代
N 个元素。阅读更多1.5.0 · 来源§fn partial_cmp<I>(self, other: I) -> Option<Ordering>
fn partial_cmp<I>(self, other: I) -> Option<Ordering>
来源§fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where Self: Sized, I: IntoIterator, F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where Self: Sized, I: IntoIterator, F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
🔬这是一个仅限 nightly 的实验性 API。(
iter_order_by)1.82.0 · 来源§fn is_sorted_by<F>(self, compare: F) -> bool
fn is_sorted_by<F>(self, compare: F) -> bool
使用给定的比较函数检查此迭代器的元素是否已排序。阅读更多
1.82.0 · 来源§fn is_sorted_by_key<F, K>(self, f: F) -> bool
fn is_sorted_by_key<F, K>(self, f: F) -> bool
使用给定的键提取函数检查此迭代器的元素是否已排序。阅读更多