@@ -254,28 +254,49 @@ pub enum Mode {
254254}
255255
256256#[ derive( Debug , Clone , Copy , PartialEq , Eq , Default ) ]
257- #[ allow( non_camel_case_types, clippy:: upper_case_acronyms) ]
258257pub enum Compression {
259- UNCOMPRESSED ,
260- SNAPPY ,
261- GZIP ,
262- LZO ,
263- BROTLI ,
258+ Uncompressed ,
259+ Snappy ,
260+ Gzip ,
261+ Lzo ,
262+ Brotli ,
264263 #[ default]
265- LZ4 ,
266- ZSTD ,
264+ Lz4 ,
265+ Zstd ,
266+ }
267+
268+ #[ derive( Debug , thiserror:: Error ) ]
269+ #[ error( "Unexpected compression algorithm: {0:?}" ) ]
270+ pub struct UnexpectedAlgo < ' a > ( & ' a str ) ;
271+
272+ impl < ' a > TryFrom < & ' a str > for Compression {
273+ type Error = UnexpectedAlgo < ' a > ;
274+ fn try_from ( value : & ' a str ) -> Result < Self , Self :: Error > {
275+ let algo = match value {
276+ "uncompressed" => Self :: Uncompressed ,
277+ "snappy" => Self :: Snappy ,
278+ "gzip" => Self :: Gzip ,
279+ "lzo" => Self :: Lzo ,
280+ "brotli" => Self :: Brotli ,
281+ "lz4" => Self :: Lz4 ,
282+ "zstd" => Self :: Zstd ,
283+ s => return Err ( UnexpectedAlgo ( s) ) ,
284+ } ;
285+
286+ Ok ( algo)
287+ }
267288}
268289
269290impl From < Compression > for parquet:: basic:: Compression {
270291 fn from ( value : Compression ) -> Self {
271292 match value {
272- Compression :: UNCOMPRESSED => parquet:: basic:: Compression :: UNCOMPRESSED ,
273- Compression :: SNAPPY => parquet:: basic:: Compression :: SNAPPY ,
274- Compression :: GZIP => parquet:: basic:: Compression :: GZIP ( GzipLevel :: default ( ) ) ,
275- Compression :: LZO => parquet:: basic:: Compression :: LZO ,
276- Compression :: BROTLI => parquet:: basic:: Compression :: BROTLI ( BrotliLevel :: default ( ) ) ,
277- Compression :: LZ4 => parquet:: basic:: Compression :: LZ4 ,
278- Compression :: ZSTD => parquet:: basic:: Compression :: ZSTD ( ZstdLevel :: default ( ) ) ,
293+ Compression :: Uncompressed => parquet:: basic:: Compression :: UNCOMPRESSED ,
294+ Compression :: Snappy => parquet:: basic:: Compression :: SNAPPY ,
295+ Compression :: Gzip => parquet:: basic:: Compression :: GZIP ( GzipLevel :: default ( ) ) ,
296+ Compression :: Lzo => parquet:: basic:: Compression :: LZO ,
297+ Compression :: Brotli => parquet:: basic:: Compression :: BROTLI ( BrotliLevel :: default ( ) ) ,
298+ Compression :: Lz4 => parquet:: basic:: Compression :: LZ4 ,
299+ Compression :: Zstd => parquet:: basic:: Compression :: ZSTD ( ZstdLevel :: default ( ) ) ,
279300 }
280301 }
281302}
0 commit comments