diff --git a/rust/parquet/src/arrow/array_reader.rs b/rust/parquet/src/arrow/array_reader.rs index 3fae72dcdd7..0e2ba82eed2 100644 --- a/rust/parquet/src/arrow/array_reader.rs +++ b/rust/parquet/src/arrow/array_reader.rs @@ -1206,7 +1206,7 @@ impl<'a> TypeVisitor>, &'a ArrayReaderBuilderContext &mut self, cur_type: Arc, context: &'a ArrayReaderBuilderContext, - ) -> Result>> { + ) -> Result>> { let mut new_context = context.clone(); new_context.path.append(vec![cur_type.name().to_string()]); diff --git a/rust/parquet/src/arrow/record_reader.rs b/rust/parquet/src/arrow/record_reader.rs index d58d563621f..a506c61edaa 100644 --- a/rust/parquet/src/arrow/record_reader.rs +++ b/rust/parquet/src/arrow/record_reader.rs @@ -82,7 +82,7 @@ impl RecordReader { } /// Set the current page reader. - pub fn set_page_reader(&mut self, page_reader: Box) -> Result<()> { + pub fn set_page_reader(&mut self, page_reader: Box) -> Result<()> { self.column_reader = Some(ColumnReaderImpl::new(self.column_desc.clone(), page_reader)); Ok(()) diff --git a/rust/parquet/src/column/page.rs b/rust/parquet/src/column/page.rs index 0573616fa8d..b3515780884 100644 --- a/rust/parquet/src/column/page.rs +++ b/rust/parquet/src/column/page.rs @@ -219,7 +219,7 @@ pub trait PageWriter { } /// An iterator over pages of some specific column in a parquet file. -pub trait PageIterator: Iterator>> { +pub trait PageIterator: Iterator>> { /// Get schema of parquet file. fn schema(&mut self) -> Result; diff --git a/rust/parquet/src/column/reader.rs b/rust/parquet/src/column/reader.rs index d8c2e7a8ebd..1181565bdcf 100644 --- a/rust/parquet/src/column/reader.rs +++ b/rust/parquet/src/column/reader.rs @@ -49,7 +49,7 @@ pub enum ColumnReader { /// column reader will read from pages in `col_page_reader`. pub fn get_column_reader( col_descr: ColumnDescPtr, - col_page_reader: Box, + col_page_reader: Box, ) -> ColumnReader { match col_descr.physical_type() { Type::BOOLEAN => ColumnReader::BoolColumnReader(ColumnReaderImpl::new( @@ -106,7 +106,7 @@ pub struct ColumnReaderImpl { descr: ColumnDescPtr, def_level_decoder: Option, rep_level_decoder: Option, - page_reader: Box, + page_reader: Box, current_encoding: Option, // The total number of values stored in the data page. @@ -117,12 +117,12 @@ pub struct ColumnReaderImpl { num_decoded_values: u32, // Cache of decoders for existing encodings - decoders: HashMap>>, + decoders: HashMap>>, } impl ColumnReaderImpl { /// Creates new column reader based on column descriptor and page reader. - pub fn new(descr: ColumnDescPtr, page_reader: Box) -> Self { + pub fn new(descr: ColumnDescPtr, page_reader: Box) -> Self { Self { descr, def_level_decoder: None, diff --git a/rust/parquet/src/column/writer.rs b/rust/parquet/src/column/writer.rs index 533a8e69a51..fc1e076954d 100644 --- a/rust/parquet/src/column/writer.rs +++ b/rust/parquet/src/column/writer.rs @@ -78,7 +78,7 @@ macro_rules! gen_stats_section { pub fn get_column_writer( descr: ColumnDescPtr, props: WriterPropertiesPtr, - page_writer: Box, + page_writer: Box, ) -> ColumnWriter { match descr.physical_type() { Type::BOOLEAN => ColumnWriter::BoolColumnWriter(ColumnWriterImpl::new( @@ -166,12 +166,12 @@ pub struct ColumnWriterImpl { // Column writer properties descr: ColumnDescPtr, props: WriterPropertiesPtr, - page_writer: Box, + page_writer: Box, has_dictionary: bool, dict_encoder: Option>, - encoder: Box>, + encoder: Box>, codec: Compression, - compressor: Option>, + compressor: Option>, // Metrics per page num_buffered_values: u32, num_buffered_encoded_values: u32, @@ -203,7 +203,7 @@ impl ColumnWriterImpl { pub fn new( descr: ColumnDescPtr, props: WriterPropertiesPtr, - page_writer: Box, + page_writer: Box, ) -> Self { let codec = props.compression(descr.path()); let compressor = create_codec(codec).unwrap(); @@ -879,7 +879,7 @@ impl ColumnWriterImpl { /// Returns reference to the underlying page writer. /// This method is intended to use in tests only. - fn get_page_writer_ref(&self) -> &Box { + fn get_page_writer_ref(&self) -> &Box { &self.page_writer } @@ -1842,7 +1842,7 @@ mod tests { /// Returns column writer. fn get_test_column_writer( - page_writer: Box, + page_writer: Box, max_def_level: i16, max_rep_level: i16, props: WriterPropertiesPtr, @@ -1854,7 +1854,7 @@ mod tests { /// Returns column reader. fn get_test_column_reader( - page_reader: Box, + page_reader: Box, max_def_level: i16, max_rep_level: i16, ) -> ColumnReaderImpl { @@ -1879,7 +1879,7 @@ mod tests { } /// Returns page writer that collects pages without serializing them. - fn get_test_page_writer() -> Box { + fn get_test_page_writer() -> Box { Box::new(TestPageWriter {}) } diff --git a/rust/parquet/src/compression.rs b/rust/parquet/src/compression.rs index 16fe487189f..a1155971fbd 100644 --- a/rust/parquet/src/compression.rs +++ b/rust/parquet/src/compression.rs @@ -60,7 +60,7 @@ pub trait Codec { /// Given the compression type `codec`, returns a codec used to compress and decompress /// bytes for the compression type. /// This returns `None` if the codec type is `UNCOMPRESSED`. -pub fn create_codec(codec: CodecType) -> Result>> { +pub fn create_codec(codec: CodecType) -> Result>> { match codec { #[cfg(any(feature = "brotli", test))] CodecType::BROTLI => Ok(Some(Box::new(BrotliCodec::new()))), diff --git a/rust/parquet/src/encodings/decoding.rs b/rust/parquet/src/encodings/decoding.rs index ee7ad5ae95c..b73ebf0285c 100644 --- a/rust/parquet/src/encodings/decoding.rs +++ b/rust/parquet/src/encodings/decoding.rs @@ -108,8 +108,8 @@ pub trait Decoder { pub fn get_decoder( descr: ColumnDescPtr, encoding: Encoding, -) -> Result>> { - let decoder: Box> = match encoding { +) -> Result>> { + let decoder: Box> = match encoding { Encoding::PLAIN => Box::new(PlainDecoder::new(descr.type_length())), Encoding::RLE_DICTIONARY | Encoding::PLAIN_DICTIONARY => { return Err(general_err!( @@ -231,7 +231,7 @@ impl DictDecoder { } /// Decodes and sets values for dictionary using `decoder` decoder. - pub fn set_dict(&mut self, mut decoder: Box>) -> Result<()> { + pub fn set_dict(&mut self, mut decoder: Box>) -> Result<()> { let num_values = decoder.values_left(); self.dictionary.resize(num_values, T::T::default()); let _ = decoder.get(&mut self.dictionary)?; diff --git a/rust/parquet/src/encodings/encoding.rs b/rust/parquet/src/encodings/encoding.rs index fdd616e9e27..d04273817e1 100644 --- a/rust/parquet/src/encodings/encoding.rs +++ b/rust/parquet/src/encodings/encoding.rs @@ -77,8 +77,8 @@ pub fn get_encoder( desc: ColumnDescPtr, encoding: Encoding, mem_tracker: MemTrackerPtr, -) -> Result>> { - let encoder: Box> = match encoding { +) -> Result>> { + let encoder: Box> = match encoding { Encoding::PLAIN => Box::new(PlainEncoder::new(desc, mem_tracker, vec![])), Encoding::RLE_DICTIONARY | Encoding::PLAIN_DICTIONARY => { return Err(general_err!( @@ -1261,8 +1261,8 @@ mod tests { } fn put_and_get( - encoder: &mut Box>, - decoder: &mut Box>, + encoder: &mut Box>, + decoder: &mut Box>, input: &[T::T], output: &mut [T::T], ) -> Result { @@ -1305,13 +1305,19 @@ mod tests { )) } - fn create_test_encoder(type_len: i32, enc: Encoding) -> Box> { + fn create_test_encoder( + type_len: i32, + enc: Encoding, + ) -> Box> { let desc = create_test_col_desc_ptr(type_len, T::get_physical_type()); let mem_tracker = Arc::new(MemTracker::new()); get_encoder(desc, enc, mem_tracker).unwrap() } - fn create_test_decoder(type_len: i32, enc: Encoding) -> Box> { + fn create_test_decoder( + type_len: i32, + enc: Encoding, + ) -> Box> { let desc = create_test_col_desc_ptr(type_len, T::get_physical_type()); get_decoder(desc, enc).unwrap() } diff --git a/rust/parquet/src/errors.rs b/rust/parquet/src/errors.rs index 18673a44a82..021c1f063f8 100644 --- a/rust/parquet/src/errors.rs +++ b/rust/parquet/src/errors.rs @@ -59,7 +59,7 @@ impl std::fmt::Display for ParquetError { } impl std::error::Error for ParquetError { - fn cause(&self) -> Option<&::std::error::Error> { + fn cause(&self) -> Option<&dyn ::std::error::Error> { None } } diff --git a/rust/parquet/src/file/reader.rs b/rust/parquet/src/file/reader.rs index 7fb8ee211cd..aa8ba83a6c0 100644 --- a/rust/parquet/src/file/reader.rs +++ b/rust/parquet/src/file/reader.rs @@ -63,7 +63,7 @@ pub trait FileReader { fn num_row_groups(&self) -> usize; /// Get the `i`th row group reader. Note this doesn't do bound check. - fn get_row_group(&self, i: usize) -> Result>; + fn get_row_group(&self, i: usize) -> Result>; /// Get full iterator of `Row`s from a file (over all row groups). /// @@ -84,7 +84,7 @@ pub trait RowGroupReader { fn num_columns(&self) -> usize; /// Get page reader for the `i`th column chunk. - fn get_column_page_reader(&self, i: usize) -> Result>; + fn get_column_page_reader(&self, i: usize) -> Result>; /// Get value reader for the `i`th column chunk. fn get_column_reader(&self, i: usize) -> Result { @@ -139,13 +139,13 @@ pub trait RowGroupReader { /// Implementation of page iterator for parquet file. pub struct FilePageIterator { column_index: usize, - row_group_indices: Box>, - file_reader: Arc, + row_group_indices: Box>, + file_reader: Arc, } impl FilePageIterator { /// Creates a page iterator for all row groups in file. - pub fn new(column_index: usize, file_reader: Arc) -> Result { + pub fn new(column_index: usize, file_reader: Arc) -> Result { let num_row_groups = file_reader.metadata().num_row_groups(); let row_group_indices = Box::new(0..num_row_groups); @@ -156,8 +156,8 @@ impl FilePageIterator { /// Create page iterator from parquet file reader with only some row groups. pub fn with_row_groups( column_index: usize, - row_group_indices: Box>, - file_reader: Arc, + row_group_indices: Box>, + file_reader: Arc, ) -> Result { // Check that column_index is valid let num_columns = file_reader @@ -180,9 +180,9 @@ impl FilePageIterator { } impl Iterator for FilePageIterator { - type Item = Result>; + type Item = Result>; - fn next(&mut self) -> Option>> { + fn next(&mut self) -> Option>> { self.row_group_indices.next().map(|row_group_index| { self.file_reader .get_row_group(row_group_index) diff --git a/rust/parquet/src/file/serialized_reader.rs b/rust/parquet/src/file/serialized_reader.rs index b0d1d0c7b31..0877e622ce4 100644 --- a/rust/parquet/src/file/serialized_reader.rs +++ b/rust/parquet/src/file/serialized_reader.rs @@ -166,7 +166,7 @@ impl FileReader for SerializedFileReader { self.metadata.num_row_groups() } - fn get_row_group(&self, i: usize) -> Result> { + fn get_row_group(&self, i: usize) -> Result> { let row_group_metadata = self.metadata.row_group(i); // Row groups should be processed sequentially. let f = Arc::clone(&self.chunk_reader); @@ -207,7 +207,7 @@ impl<'a, R: 'static + ChunkReader> RowGroupReader for SerializedRowGroupReader<' } // TODO: fix PARQUET-816 - fn get_column_page_reader(&self, i: usize) -> Result> { + fn get_column_page_reader(&self, i: usize) -> Result> { let col = self.metadata.column(i); let (col_start, col_length) = col.byte_range(); let file_chunk = self.chunk_reader.get_read(col_start, col_length as usize)?; @@ -232,7 +232,7 @@ pub struct SerializedPageReader { buf: T, // The compression codec for this column chunk. Only set for non-PLAIN codec. - decompressor: Option>, + decompressor: Option>, // The number of values we have seen so far. seen_num_values: i64, @@ -544,7 +544,7 @@ mod tests { // Test row group reader let row_group_reader_result = reader.get_row_group(0); assert!(row_group_reader_result.is_ok()); - let row_group_reader: Box = row_group_reader_result.unwrap(); + let row_group_reader: Box = row_group_reader_result.unwrap(); assert_eq!( row_group_reader.num_columns(), row_group_metadata.num_columns() @@ -558,7 +558,7 @@ mod tests { // TODO: test for every column let page_reader_0_result = row_group_reader.get_column_page_reader(0); assert!(page_reader_0_result.is_ok()); - let mut page_reader_0: Box = page_reader_0_result.unwrap(); + let mut page_reader_0: Box = page_reader_0_result.unwrap(); let mut page_count = 0; while let Ok(Some(page)) = page_reader_0.get_next_page() { let is_expected_page = match page { @@ -636,7 +636,7 @@ mod tests { // Test row group reader let row_group_reader_result = reader.get_row_group(0); assert!(row_group_reader_result.is_ok()); - let row_group_reader: Box = row_group_reader_result.unwrap(); + let row_group_reader: Box = row_group_reader_result.unwrap(); assert_eq!( row_group_reader.num_columns(), row_group_metadata.num_columns() @@ -650,7 +650,7 @@ mod tests { // TODO: test for every column let page_reader_0_result = row_group_reader.get_column_page_reader(0); assert!(page_reader_0_result.is_ok()); - let mut page_reader_0: Box = page_reader_0_result.unwrap(); + let mut page_reader_0: Box = page_reader_0_result.unwrap(); let mut page_count = 0; while let Ok(Some(page)) = page_reader_0.get_next_page() { let is_expected_page = match page { diff --git a/rust/parquet/src/file/writer.rs b/rust/parquet/src/file/writer.rs index 265014bf683..53aa0659c55 100644 --- a/rust/parquet/src/file/writer.rs +++ b/rust/parquet/src/file/writer.rs @@ -66,11 +66,14 @@ pub trait FileWriter { /// There is no limit on a number of row groups in a file; however, row groups have /// to be written sequentially. Every time the next row group is requested, the /// previous row group must be finalised and closed using `close_row_group` method. - fn next_row_group(&mut self) -> Result>; + fn next_row_group(&mut self) -> Result>; /// Finalises and closes row group that was created using `next_row_group` method. /// After calling this method, the next row group is available for writes. - fn close_row_group(&mut self, row_group_writer: Box) -> Result<()>; + fn close_row_group( + &mut self, + row_group_writer: Box, + ) -> Result<()>; /// Closes and finalises file writer. /// @@ -165,7 +168,7 @@ impl SerializedFileWriter { /// Finalises active row group writer, otherwise no-op. fn finalise_row_group_writer( &mut self, - mut row_group_writer: Box, + mut row_group_writer: Box, ) -> Result<()> { let row_group_metadata = row_group_writer.close()?; self.total_num_rows += row_group_metadata.num_rows(); @@ -229,7 +232,7 @@ impl SerializedFileWriter { impl FileWriter for SerializedFileWriter { #[inline] - fn next_row_group(&mut self) -> Result> { + fn next_row_group(&mut self) -> Result> { self.assert_closed()?; self.assert_previous_writer_closed()?; let row_group_writer = SerializedRowGroupWriter::new( @@ -242,7 +245,10 @@ impl FileWriter for SerializedFileWriter { } #[inline] - fn close_row_group(&mut self, row_group_writer: Box) -> Result<()> { + fn close_row_group( + &mut self, + row_group_writer: Box, + ) -> Result<()> { self.assert_closed()?; let res = self.finalise_row_group_writer(row_group_writer); self.previous_writer_closed = res.is_ok(); @@ -993,7 +999,7 @@ mod tests { } /// Helper function to compress a slice - fn compress_helper(compressor: Option<&mut Box>, data: &[u8]) -> Vec { + fn compress_helper(compressor: Option<&mut Box>, data: &[u8]) -> Vec { let mut output_buf = vec![]; if let Some(cmpr) = compressor { cmpr.compress(data, &mut output_buf).unwrap(); diff --git a/rust/parquet/src/lib.rs b/rust/parquet/src/lib.rs index 5ce63bbdedc..6e9db278804 100644 --- a/rust/parquet/src/lib.rs +++ b/rust/parquet/src/lib.rs @@ -18,7 +18,6 @@ #![allow(incomplete_features)] #![allow(dead_code)] #![allow(non_camel_case_types)] -#![allow(bare_trait_objects)] #![allow( clippy::approx_constant, clippy::borrowed_box, diff --git a/rust/parquet/src/record/api.rs b/rust/parquet/src/record/api.rs index 07f82160db4..411016e7ce8 100644 --- a/rust/parquet/src/record/api.rs +++ b/rust/parquet/src/record/api.rs @@ -134,7 +134,7 @@ pub trait RowAccessor { /// Trait for formating fields within a Row. pub trait RowFormatter { - fn fmt(&self, i: usize) -> &fmt::Display; + fn fmt(&self, i: usize) -> &dyn fmt::Display; } /// Macro to generate type-safe get_xxx methods for primitive types, @@ -173,7 +173,7 @@ macro_rules! row_complex_accessor { impl RowFormatter for Row { /// Get Display reference for a given field. - fn fmt(&self, i: usize) -> &fmt::Display { + fn fmt(&self, i: usize) -> &dyn fmt::Display { &self.fields[i].1 } } @@ -387,8 +387,8 @@ pub fn make_map(entries: Vec<(Field, Field)>) -> Map { /// Trait for type-safe access of an index for a `Map` pub trait MapAccessor { - fn get_keys<'a>(&'a self) -> Box; - fn get_values<'a>(&'a self) -> Box; + fn get_keys<'a>(&'a self) -> Box; + fn get_values<'a>(&'a self) -> Box; } struct MapList<'a> { @@ -453,14 +453,14 @@ impl<'a> ListAccessor for MapList<'a> { } impl MapAccessor for Map { - fn get_keys<'a>(&'a self) -> Box { + fn get_keys<'a>(&'a self) -> Box { let map_list = MapList { elements: self.entries.iter().map(|v| &v.0).collect(), }; Box::new(map_list) } - fn get_values<'a>(&'a self) -> Box { + fn get_values<'a>(&'a self) -> Box { let map_list = MapList { elements: self.entries.iter().map(|v| &v.1).collect(), }; diff --git a/rust/parquet/src/record/reader.rs b/rust/parquet/src/record/reader.rs index 2323cd17b71..e72577babc2 100644 --- a/rust/parquet/src/record/reader.rs +++ b/rust/parquet/src/record/reader.rs @@ -58,7 +58,7 @@ impl TreeBuilder { pub fn build( &self, descr: SchemaDescPtr, - row_group_reader: &RowGroupReader, + row_group_reader: &dyn RowGroupReader, ) -> Reader { // Prepare lookup table of column path -> original column index // This allows to prune columns and map schema leaf nodes to the column readers @@ -96,7 +96,7 @@ impl TreeBuilder { pub fn as_iter( &self, descr: SchemaDescPtr, - row_group_reader: &RowGroupReader, + row_group_reader: &dyn RowGroupReader, ) -> ReaderIter { let num_records = row_group_reader.metadata().num_rows() as usize; ReaderIter::new(self.build(descr, row_group_reader), num_records) @@ -110,7 +110,7 @@ impl TreeBuilder { mut curr_def_level: i16, mut curr_rep_level: i16, paths: &HashMap, - row_group_reader: &RowGroupReader, + row_group_reader: &dyn RowGroupReader, ) -> Reader { assert!(field.get_basic_info().has_repetition()); // Update current definition and repetition levels for this type @@ -615,12 +615,12 @@ impl fmt::Display for Reader { /// The enum Either with variants That represet a reference and a box of /// [`FileReader`](crate::file::reader::FileReader). enum Either<'a> { - Left(&'a FileReader), - Right(Box), + Left(&'a dyn FileReader), + Right(Box), } impl<'a> Either<'a> { - fn reader(&self) -> &FileReader { + fn reader(&self) -> &dyn FileReader { match *self { Either::Left(r) => r, Either::Right(ref r) => &**r, @@ -665,7 +665,7 @@ impl<'a> RowIter<'a> { /// Creates iterator of [`Row`](crate::record::Row)s for all row groups in a /// file. - pub fn from_file(proj: Option, reader: &'a FileReader) -> Result { + pub fn from_file(proj: Option, reader: &'a dyn FileReader) -> Result { let either = Either::Left(reader); let descr = Self::get_proj_descr( proj, @@ -678,7 +678,7 @@ impl<'a> RowIter<'a> { /// Creates iterator of [`Row`](crate::record::Row)s for a specific row group. pub fn from_row_group( proj: Option, - reader: &'a RowGroupReader, + reader: &'a dyn RowGroupReader, ) -> Result { let descr = Self::get_proj_descr(proj, reader.metadata().schema_descr_ptr())?; let tree_builder = Self::tree_builder(); @@ -691,7 +691,7 @@ impl<'a> RowIter<'a> { /// Creates a iterator of [`Row`](crate::record::Row)s from a /// [`FileReader`](crate::file::reader::FileReader) using the full file schema. - pub fn from_file_into(reader: Box) -> Self { + pub fn from_file_into(reader: Box) -> Self { let either = Either::Right(reader); let descr = either .reader() diff --git a/rust/parquet/src/record/record_writer.rs b/rust/parquet/src/record/record_writer.rs index 00ce9fd4e47..56817eb2eca 100644 --- a/rust/parquet/src/record/record_writer.rs +++ b/rust/parquet/src/record/record_writer.rs @@ -21,6 +21,6 @@ use super::super::file::writer::RowGroupWriter; pub trait RecordWriter { fn write_to_row_group( &self, - row_group_writer: &mut Box, + row_group_writer: &mut Box, ) -> Result<(), ParquetError>; } diff --git a/rust/parquet/src/schema/printer.rs b/rust/parquet/src/schema/printer.rs index 81ada8f6f99..35e019d3233 100644 --- a/rust/parquet/src/schema/printer.rs +++ b/rust/parquet/src/schema/printer.rs @@ -54,7 +54,7 @@ use crate::schema::types::Type; /// Prints Parquet metadata [`ParquetMetaData`](crate::file::metadata::ParquetMetaData) /// information. #[allow(unused_must_use)] -pub fn print_parquet_metadata(out: &mut io::Write, metadata: &ParquetMetaData) { +pub fn print_parquet_metadata(out: &mut dyn io::Write, metadata: &ParquetMetaData) { print_file_metadata(out, &metadata.file_metadata()); writeln!(out); writeln!(out); @@ -71,7 +71,7 @@ pub fn print_parquet_metadata(out: &mut io::Write, metadata: &ParquetMetaData) { /// Prints file metadata [`FileMetaData`](crate::file::metadata::FileMetaData) /// information. #[allow(unused_must_use)] -pub fn print_file_metadata(out: &mut io::Write, file_metadata: &FileMetaData) { +pub fn print_file_metadata(out: &mut dyn io::Write, file_metadata: &FileMetaData) { writeln!(out, "version: {}", file_metadata.version()); writeln!(out, "num of rows: {}", file_metadata.num_rows()); if let Some(created_by) = file_metadata.created_by().as_ref() { @@ -94,7 +94,7 @@ pub fn print_file_metadata(out: &mut io::Write, file_metadata: &FileMetaData) { /// Prints Parquet [`Type`](crate::schema::types::Type) information. #[allow(unused_must_use)] -pub fn print_schema(out: &mut io::Write, tp: &Type) { +pub fn print_schema(out: &mut dyn io::Write, tp: &Type) { // TODO: better if we can pass fmt::Write to Printer. // But how can we make it to accept both io::Write & fmt::Write? let mut s = String::new(); @@ -106,7 +106,7 @@ pub fn print_schema(out: &mut io::Write, tp: &Type) { } #[allow(unused_must_use)] -fn print_row_group_metadata(out: &mut io::Write, rg_metadata: &RowGroupMetaData) { +fn print_row_group_metadata(out: &mut dyn io::Write, rg_metadata: &RowGroupMetaData) { writeln!(out, "total byte size: {}", rg_metadata.total_byte_size()); writeln!(out, "num of rows: {}", rg_metadata.num_rows()); writeln!(out); @@ -121,7 +121,10 @@ fn print_row_group_metadata(out: &mut io::Write, rg_metadata: &RowGroupMetaData) } #[allow(unused_must_use)] -fn print_column_chunk_metadata(out: &mut io::Write, cc_metadata: &ColumnChunkMetaData) { +fn print_column_chunk_metadata( + out: &mut dyn io::Write, + cc_metadata: &ColumnChunkMetaData, +) { writeln!(out, "column type: {}", cc_metadata.column_type()); writeln!(out, "column path: {}", cc_metadata.column_path()); let encoding_strs: Vec<_> = cc_metadata @@ -167,7 +170,7 @@ fn print_column_chunk_metadata(out: &mut io::Write, cc_metadata: &ColumnChunkMet } #[allow(unused_must_use)] -fn print_dashes(out: &mut io::Write, num: i32) { +fn print_dashes(out: &mut dyn io::Write, num: i32) { for _ in 0..num { write!(out, "-"); } @@ -178,13 +181,13 @@ const INDENT_WIDTH: i32 = 2; /// Struct for printing Parquet message type. struct Printer<'a> { - output: &'a mut fmt::Write, + output: &'a mut dyn fmt::Write, indent: i32, } #[allow(unused_must_use)] impl<'a> Printer<'a> { - fn new(output: &'a mut fmt::Write) -> Self { + fn new(output: &'a mut dyn fmt::Write) -> Self { Printer { output, indent: 0 } } diff --git a/rust/parquet/src/util/test_common/page_util.rs b/rust/parquet/src/util/test_common/page_util.rs index e360f3da52a..faff18edc20 100644 --- a/rust/parquet/src/util/test_common/page_util.rs +++ b/rust/parquet/src/util/test_common/page_util.rs @@ -119,7 +119,7 @@ impl DataPageBuilder for DataPageBuilderImpl { values.len() ); self.encoding = Some(encoding); - let mut encoder: Box> = + let mut encoder: Box> = get_encoder::(self.desc.clone(), encoding, self.mem_tracker.clone()) .expect("get_encoder() should be OK"); encoder.put(values).expect("put() should be OK");