diff --git a/.env b/.env
index 5c6aaa5182a..c06a7f9f128 100644
--- a/.env
+++ b/.env
@@ -28,7 +28,7 @@ FEDORA=33
PYTHON=3.6
LLVM=11
CLANG_TOOLS=8
-RUST=nightly-2020-04-22
+RUST=nightly-2020-11-14
GO=1.12
NODE=14
MAVEN=3.5.4
diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml
index b4f68ece02b..d99641e7a0c 100644
--- a/.github/workflows/rust.yml
+++ b/.github/workflows/rust.yml
@@ -50,7 +50,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- rust: [nightly-2020-04-22]
+ rust: [nightly-2020-11-14]
env:
RUST: ${{ matrix.rust }}
steps:
@@ -96,7 +96,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- rust: [nightly-2020-04-22]
+ rust: [nightly-2020-11-14]
steps:
- name: Install Rust
uses: actions-rs/toolchain@v1
@@ -134,7 +134,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- rust: [nightly-2020-04-22]
+ rust: [nightly-2020-11-14]
steps:
- name: Install Rust
uses: actions-rs/toolchain@v1
diff --git a/.github/workflows/rust_cron.yml b/.github/workflows/rust_cron.yml
index 378f2dd1081..3f605f11210 100644
--- a/.github/workflows/rust_cron.yml
+++ b/.github/workflows/rust_cron.yml
@@ -35,7 +35,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- rust: [nightly-2020-04-22]
+ rust: [nightly-2020-11-14]
env:
RUST: ${{ matrix.rust }}
steps:
diff --git a/ci/docker/debian-10-rust.dockerfile b/ci/docker/debian-10-rust.dockerfile
index 9c9c9b51048..b074eb1286f 100644
--- a/ci/docker/debian-10-rust.dockerfile
+++ b/ci/docker/debian-10-rust.dockerfile
@@ -33,7 +33,7 @@ RUN wget -q -O - https://github.com/google/flatbuffers/archive/v${flatbuffers}.t
cd / && \
rm -rf flatbuffers-${flatbuffers}
-ARG rust=nightly-2020-04-22
+ARG rust=nightly-2020-11-14
# freeze the version for deterministic builds
RUN rustup default ${rust} && \
diff --git a/ci/scripts/rust_coverage.sh b/ci/scripts/rust_coverage.sh
index fbe5b0d853a..a8c1c362594 100755
--- a/ci/scripts/rust_coverage.sh
+++ b/ci/scripts/rust_coverage.sh
@@ -32,7 +32,9 @@ pushd ${source_dir}
rustup default ${rust}
rustup component add rustfmt --toolchain ${rust}-x86_64-unknown-linux-gnu
-cargo install cargo-tarpaulin
+# 2020-11-15: There is a cargo-tarpaulin regression in 0.17.0
+# see https://github.com/xd009642/tarpaulin/issues/618
+cargo install --version 0.16.0 cargo-tarpaulin
cargo tarpaulin --out Xml
diff --git a/rust/arrow/benches/array_from_vec.rs b/rust/arrow/benches/array_from_vec.rs
index 41900b8831a..6135bcdaab9 100644
--- a/rust/arrow/benches/array_from_vec.rs
+++ b/rust/arrow/benches/array_from_vec.rs
@@ -76,8 +76,7 @@ fn struct_array_from_vec(
let ints: ArrayRef = Arc::new(Int32Array::from(ints.clone()));
criterion::black_box(
- StructArray::try_from(vec![(field1.clone(), strings), (field2.clone(), ints)])
- .unwrap(),
+ StructArray::try_from(vec![(field1, strings), (field2, ints)]).unwrap(),
);
}
diff --git a/rust/arrow/benches/equal.rs b/rust/arrow/benches/equal.rs
index 9d9c68abbb6..6783662e186 100644
--- a/rust/arrow/benches/equal.rs
+++ b/rust/arrow/benches/equal.rs
@@ -15,6 +15,9 @@
// specific language governing permissions and limitations
// under the License.
+// Allowed because we use `arr == arr` in benchmarks
+#![allow(clippy::eq_op)]
+
#[macro_use]
extern crate criterion;
use criterion::Criterion;
diff --git a/rust/arrow/benches/filter_kernels.rs b/rust/arrow/benches/filter_kernels.rs
index 75c04352c0a..1348238b074 100644
--- a/rust/arrow/benches/filter_kernels.rs
+++ b/rust/arrow/benches/filter_kernels.rs
@@ -81,18 +81,9 @@ fn bench_filter_context_f32(data_array: &Float32Array, filter_context: &FilterCo
fn add_benchmark(c: &mut Criterion) {
let size = 65536;
- let filter_array = create_bool_array(size, |i| match i % 2 {
- 0 => true,
- _ => false,
- });
- let sparse_filter_array = create_bool_array(size, |i| match i % 8000 {
- 0 => true,
- _ => false,
- });
- let dense_filter_array = create_bool_array(size, |i| match i % 8000 {
- 0 => false,
- _ => true,
- });
+ let filter_array = create_bool_array(size, |i| matches!(i % 2, 0));
+ let sparse_filter_array = create_bool_array(size, |i| matches!(i % 8000, 0));
+ let dense_filter_array = create_bool_array(size, |i| !matches!(i % 8000, 0));
let filter_context = FilterContext::new(&filter_array).unwrap();
let sparse_filter_context = FilterContext::new(&sparse_filter_array).unwrap();
diff --git a/rust/arrow/examples/dynamic_types.rs b/rust/arrow/examples/dynamic_types.rs
index cd4d30e79c5..95e0a2831e3 100644
--- a/rust/arrow/examples/dynamic_types.rs
+++ b/rust/arrow/examples/dynamic_types.rs
@@ -62,7 +62,8 @@ fn main() -> Result<()> {
let batch =
RecordBatch::try_new(Arc::new(schema), vec![Arc::new(id), Arc::new(nested)])?;
- Ok(process(&batch))
+ process(&batch);
+ Ok(())
}
/// Create a new batch by performing a projection of id, nested.c
diff --git a/rust/arrow/src/array/array_string.rs b/rust/arrow/src/array/array_string.rs
index ec79ac9010d..5f871b8f595 100644
--- a/rust/arrow/src/array/array_string.rs
+++ b/rust/arrow/src/array/array_string.rs
@@ -434,10 +434,8 @@ mod tests {
// from Iterator