You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by jo...@apache.org on 2020/12/27 18:20:27 UTC

[arrow] branch master updated: ARROW-11028: [Rust] Make a few pattern matches more idiomatic

This is an automated email from the ASF dual-hosted git repository.

jorgecarleitao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new e1b38cd  ARROW-11028: [Rust] Make a few pattern matches more idiomatic
e1b38cd is described below

commit e1b38cdaa4f2a7d35e2e576463e12b38875f29f3
Author: François Garillot <fr...@garillot.net>
AuthorDate: Sun Dec 27 18:19:27 2020 +0000

    ARROW-11028: [Rust] Make a few pattern matches more idiomatic
    
    Some pattern-matches can be replaced by a direct combinator equivalent.
    
    Closes #9006 from huitseeker/warts-2
    
    Authored-by: François Garillot <fr...@garillot.net>
    Signed-off-by: Jorge C. Leitao <jo...@gmail.com>
---
 rust/arrow/src/array/array_binary.rs             |  3 +--
 rust/arrow/src/compute/kernels/cast.rs           |  5 +----
 rust/datafusion/src/physical_plan/expressions.rs |  7 +++----
 rust/parquet_derive/src/parquet_field.rs         | 18 +++---------------
 4 files changed, 8 insertions(+), 25 deletions(-)

diff --git a/rust/arrow/src/array/array_binary.rs b/rust/arrow/src/array/array_binary.rs
index da64072..db4097a 100644
--- a/rust/arrow/src/array/array_binary.rs
+++ b/rust/arrow/src/array/array_binary.rs
@@ -399,8 +399,7 @@ impl From<Vec<Option<Vec<u8>>>> for FixedSizeBinaryArray {
 
         let data = data
             .into_iter()
-            .map(|e| e.unwrap_or_else(|| vec![0; size]))
-            .flatten()
+            .flat_map(|e| e.unwrap_or_else(|| vec![0; size]))
             .collect::<Vec<_>>();
         let data = ArrayData::new(
             DataType::FixedSizeBinary(size as i32),
diff --git a/rust/arrow/src/compute/kernels/cast.rs b/rust/arrow/src/compute/kernels/cast.rs
index 028f115..f112876 100644
--- a/rust/arrow/src/compute/kernels/cast.rs
+++ b/rust/arrow/src/compute/kernels/cast.rs
@@ -882,10 +882,7 @@ where
     R::Native: num::NumCast,
 {
     from.iter()
-        .map(|v| match v {
-            Some(v) => num::cast::cast::<T::Native, R::Native>(v),
-            None => None,
-        })
+        .map(|v| v.and_then(num::cast::cast::<T::Native, R::Native>))
         .collect()
 }
 
diff --git a/rust/datafusion/src/physical_plan/expressions.rs b/rust/datafusion/src/physical_plan/expressions.rs
index 75120e6..b0bbd77 100644
--- a/rust/datafusion/src/physical_plan/expressions.rs
+++ b/rust/datafusion/src/physical_plan/expressions.rs
@@ -473,10 +473,9 @@ impl Accumulator for AvgAccumulator {
 
     fn evaluate(&self) -> Result<ScalarValue> {
         match self.sum {
-            ScalarValue::Float64(e) => Ok(ScalarValue::Float64(match e {
-                Some(f) => Some(f / self.count as f64),
-                None => None,
-            })),
+            ScalarValue::Float64(e) => {
+                Ok(ScalarValue::Float64(e.map(|f| f / self.count as f64)))
+            }
             _ => Err(DataFusionError::Internal(
                 "Sum should be f64 on average".to_string(),
             )),
diff --git a/rust/parquet_derive/src/parquet_field.rs b/rust/parquet_derive/src/parquet_field.rs
index 007879e..328f4a6 100644
--- a/rust/parquet_derive/src/parquet_field.rs
+++ b/rust/parquet_derive/src/parquet_field.rs
@@ -826,11 +826,7 @@ mod test {
             {
                 let definition_levels : Vec<i16> = self.iter().map(|rec| if rec.maybe_happened.is_some() { 1 } else { 0 }).collect();
                 let vals : Vec<_> = records.iter().filter_map(|rec| {
-                    if let Some(inner) = rec.maybe_happened {
-                        Some( inner.timestamp_millis() )
-                    } else {
-                        None
-                    }
+                    rec.maybe_happened.map(|inner| {  inner.timestamp_millis()  })
                 }).collect();
 
                 if let parquet::column::writer::ColumnWriter::Int64ColumnWriter(ref mut typed) = column_writer {
@@ -870,11 +866,7 @@ mod test {
             {
                 let definition_levels : Vec<i16> = self.iter().map(|rec| if rec.maybe_happened.is_some() { 1 } else { 0 }).collect();
                 let vals : Vec<_> = records.iter().filter_map(|rec| {
-                    if let Some(inner) = rec.maybe_happened {
-                        Some( inner.signed_duration_since(chrono::NaiveDate::from_ymd(1970, 1, 1)).num_days() as i32 )
-                    } else {
-                        None
-                    }
+                    rec.maybe_happened.map(|inner| {  inner.signed_duration_since(chrono::NaiveDate::from_ymd(1970, 1, 1)).num_days() as i32  })
                 }).collect();
 
                 if let parquet::column::writer::ColumnWriter::Int32ColumnWriter(ref mut typed) = column_writer {
@@ -914,11 +906,7 @@ mod test {
             {
                 let definition_levels : Vec<i16> = self.iter().map(|rec| if rec.maybe_unique_id.is_some() { 1 } else { 0 }).collect();
                 let vals : Vec<_> = records.iter().filter_map(|rec| {
-                    if let Some(ref inner) = rec.maybe_unique_id {
-                        Some( (&inner.to_string()[..]).into() )
-                    } else {
-                        None
-                    }
+                    rec.maybe_unique_id.map(|ref inner| {  (&inner.to_string()[..]).into()  })
                 }).collect();
 
                 if let parquet::column::writer::ColumnWriter::ByteArrayColumnWriter(ref mut typed) = column_writer {