This is an automated email from the ASF dual-hosted git repository. xuanwo pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/opendal.git
The following commit(s) were added to refs/heads/main by this push: new 8521accc2 refactor!: Bump OpenDAL MSRV to 1.80 (#5868) 8521accc2 is described below commit 8521accc23cfd146ba44b5bfbb798212efcec07e Author: Xuanwo <git...@xuanwo.io> AuthorDate: Mon Mar 24 18:23:15 2025 +0800 refactor!: Bump OpenDAL MSRV to 1.80 (#5868) * bump msrv to 1.80 Signed-off-by: Xuanwo <git...@xuanwo.io> * Remove once_cell Signed-off-by: Xuanwo <git...@xuanwo.io> --------- Signed-off-by: Xuanwo <git...@xuanwo.io> --- .github/workflows/ci_core.yml | 4 +- bin/oay/Cargo.lock | 1 - bin/oay/Cargo.toml | 2 +- bin/ofs/Cargo.lock | 1 - bin/ofs/Cargo.toml | 2 +- bin/oli/Cargo.lock | 1 - bin/oli/Cargo.toml | 2 +- bindings/c/Cargo.toml | 3 +- bindings/c/src/operator.rs | 4 +- bindings/cpp/Cargo.toml | 2 +- bindings/dotnet/Cargo.toml | 2 +- bindings/haskell/Cargo.toml | 2 +- bindings/java/Cargo.toml | 3 +- bindings/lua/Cargo.toml | 2 +- bindings/nodejs/Cargo.toml | 2 +- bindings/ocaml/Cargo.toml | 2 +- bindings/php/Cargo.toml | 2 +- bindings/python/Cargo.toml | 2 +- bindings/ruby/Cargo.toml | 2 +- bindings/ruby/opendal.gemspec | 2 +- core/Cargo.lock | 1 - core/Cargo.toml | 20 +++--- core/benches/types/concurrent_tasks.rs | 6 +- core/benches/vs_fs/Cargo.toml | 2 +- core/benches/vs_s3/Cargo.toml | 2 +- core/fuzz/Cargo.toml | 2 +- core/src/layers/blocking.rs | 8 +-- core/src/layers/dtrace.rs | 27 +++----- core/src/layers/error_context.rs | 18 ++---- core/src/layers/logging.rs | 112 +++++++++++++-------------------- core/src/layers/observe/metrics.rs | 102 ++++++++++-------------------- core/src/raw/http_util/client.rs | 5 +- core/src/raw/tests/utils.rs | 4 +- core/src/services/gcs/core.rs | 6 +- core/src/services/s3/backend.rs | 4 +- core/src/types/error.rs | 10 +-- dev/Cargo.toml | 2 +- integrations/cloud_filter/Cargo.toml | 2 +- integrations/dav-server/Cargo.toml | 2 +- integrations/fuse3/Cargo.toml | 2 +- integrations/object_store/Cargo.toml | 2 +- integrations/parquet/Cargo.toml | 2 +- integrations/unftp-sbe/Cargo.toml | 2 +- integrations/virtiofs/Cargo.toml | 2 +- 44 files changed, 155 insertions(+), 233 deletions(-) diff --git a/.github/workflows/ci_core.yml b/.github/workflows/ci_core.yml index 323dcc246..ae1a20bd6 100644 --- a/.github/workflows/ci_core.yml +++ b/.github/workflows/ci_core.yml @@ -80,8 +80,8 @@ jobs: check_msrv: runs-on: ubuntu-latest env: - # OpenDAL's MSRV is 1.75. - OPENDAL_MSRV: "1.75" + # OpenDAL's MSRV is 1.80. + OPENDAL_MSRV: "1.80" steps: - uses: actions/checkout@v4 - name: Setup msrv of rust diff --git a/bin/oay/Cargo.lock b/bin/oay/Cargo.lock index 6d23222bb..5d37c0dc6 100644 --- a/bin/oay/Cargo.lock +++ b/bin/oay/Cargo.lock @@ -1047,7 +1047,6 @@ dependencies = [ "http", "log", "md-5", - "once_cell", "percent-encoding", "quick-xml", "reqwest", diff --git a/bin/oay/Cargo.toml b/bin/oay/Cargo.toml index 662246e85..58b64107c 100644 --- a/bin/oay/Cargo.toml +++ b/bin/oay/Cargo.toml @@ -26,7 +26,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" version = "0.41.17" [features] diff --git a/bin/ofs/Cargo.lock b/bin/ofs/Cargo.lock index 4bcf92b1e..be4946b2c 100644 --- a/bin/ofs/Cargo.lock +++ b/bin/ofs/Cargo.lock @@ -1211,7 +1211,6 @@ dependencies = [ "http", "log", "md-5", - "once_cell", "percent-encoding", "quick-xml 0.36.2", "rand", diff --git a/bin/ofs/Cargo.toml b/bin/ofs/Cargo.toml index a726c9ed5..be5a3ce76 100644 --- a/bin/ofs/Cargo.toml +++ b/bin/ofs/Cargo.toml @@ -27,7 +27,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" [dependencies] anyhow = { version = "1" } diff --git a/bin/oli/Cargo.lock b/bin/oli/Cargo.lock index f5fc73684..04baada97 100644 --- a/bin/oli/Cargo.lock +++ b/bin/oli/Cargo.lock @@ -1316,7 +1316,6 @@ dependencies = [ "http", "log", "md-5", - "once_cell", "percent-encoding", "prost", "quick-xml 0.36.2", diff --git a/bin/oli/Cargo.toml b/bin/oli/Cargo.toml index 931daf269..9d7f57ea5 100644 --- a/bin/oli/Cargo.toml +++ b/bin/oli/Cargo.toml @@ -26,7 +26,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" version = "0.41.17" [dependencies] diff --git a/bindings/c/Cargo.toml b/bindings/c/Cargo.toml index c3c669dd4..98e8341b8 100644 --- a/bindings/c/Cargo.toml +++ b/bindings/c/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" [lib] crate-type = ["cdylib", "staticlib"] @@ -35,7 +35,6 @@ cbindgen = "0.26.0" [dependencies] bytes = "1.4.0" -once_cell = "1.17.1" # this crate won't be published, we always use the local version opendal = { version = ">=0", path = "../../core", features = [ "layers-blocking", diff --git a/bindings/c/src/operator.rs b/bindings/c/src/operator.rs index eca0284d7..6545c6a52 100644 --- a/bindings/c/src/operator.rs +++ b/bindings/c/src/operator.rs @@ -19,13 +19,13 @@ use std::collections::HashMap; use std::ffi::c_void; use std::os::raw::c_char; use std::str::FromStr; +use std::sync::LazyLock; use ::opendal as core; -use once_cell::sync::Lazy; use super::*; -static RUNTIME: Lazy<tokio::runtime::Runtime> = Lazy::new(|| { +static RUNTIME: LazyLock<tokio::runtime::Runtime> = LazyLock::new(|| { tokio::runtime::Builder::new_multi_thread() .enable_all() .build() diff --git a/bindings/cpp/Cargo.toml b/bindings/cpp/Cargo.toml index 0e0a2cd67..4ee8d3996 100644 --- a/bindings/cpp/Cargo.toml +++ b/bindings/cpp/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" [lib] crate-type = ["staticlib"] diff --git a/bindings/dotnet/Cargo.toml b/bindings/dotnet/Cargo.toml index 7b048fb1c..382abe7f6 100644 --- a/bindings/dotnet/Cargo.toml +++ b/bindings/dotnet/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" [lib] crate-type = ["cdylib"] diff --git a/bindings/haskell/Cargo.toml b/bindings/haskell/Cargo.toml index 2cd30e89e..afa89e023 100644 --- a/bindings/haskell/Cargo.toml +++ b/bindings/haskell/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" [lib] crate-type = ["cdylib"] diff --git a/bindings/java/Cargo.toml b/bindings/java/Cargo.toml index cee4433ad..4ae7df212 100644 --- a/bindings/java/Cargo.toml +++ b/bindings/java/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" [lib] crate-type = ["cdylib"] @@ -151,7 +151,6 @@ services-yandex-disk = ["opendal/services-yandex-disk"] [dependencies] anyhow = "1.0.71" jni = "0.21.1" -once_cell = "1.19.0" # this crate won't be published, we always use the local version opendal = { version = ">=0", path = "../../core", features = [ "layers-blocking", diff --git a/bindings/lua/Cargo.toml b/bindings/lua/Cargo.toml index 56862f350..17b140ee1 100644 --- a/bindings/lua/Cargo.toml +++ b/bindings/lua/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" [features] default = ["mlua/lua52"] diff --git a/bindings/nodejs/Cargo.toml b/bindings/nodejs/Cargo.toml index 5e538943d..7145fdc07 100644 --- a/bindings/nodejs/Cargo.toml +++ b/bindings/nodejs/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" [features] default = [ diff --git a/bindings/ocaml/Cargo.toml b/bindings/ocaml/Cargo.toml index a4fad2658..13ccd9d4b 100644 --- a/bindings/ocaml/Cargo.toml +++ b/bindings/ocaml/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" [lib] crate-type = ["staticlib", "cdylib"] diff --git a/bindings/php/Cargo.toml b/bindings/php/Cargo.toml index f5aaeb270..6f6e74df3 100644 --- a/bindings/php/Cargo.toml +++ b/bindings/php/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" [lib] crate-type = ["cdylib"] diff --git a/bindings/python/Cargo.toml b/bindings/python/Cargo.toml index dcfcb2ceb..1ce24576d 100644 --- a/bindings/python/Cargo.toml +++ b/bindings/python/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" version = "0.45.16" [features] diff --git a/bindings/ruby/Cargo.toml b/bindings/ruby/Cargo.toml index fc6d9bf75..133cc41bf 100644 --- a/bindings/ruby/Cargo.toml +++ b/bindings/ruby/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" [lib] crate-type = ["cdylib"] diff --git a/bindings/ruby/opendal.gemspec b/bindings/ruby/opendal.gemspec index 08499a646..e100043ca 100644 --- a/bindings/ruby/opendal.gemspec +++ b/bindings/ruby/opendal.gemspec @@ -59,7 +59,7 @@ Gem::Specification.new do |spec| spec.extensions = ["./extconf.rb"] - spec.requirements = ["Rust >= 1.75"] + spec.requirements = ["Rust >= 1.80"] # use a Ruby version which: # - supports Rubygems with the ability of compilation of Rust gem # - not end of life diff --git a/core/Cargo.lock b/core/Cargo.lock index 36798a7b9..cbf0ae12c 100644 --- a/core/Cargo.lock +++ b/core/Cargo.lock @@ -5291,7 +5291,6 @@ dependencies = [ "mongodb", "mongodb-internal-macros", "monoio", - "once_cell", "openssh", "openssh-sftp-client", "opentelemetry", diff --git a/core/Cargo.toml b/core/Cargo.toml index af7d433c5..4a5d47fd8 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -27,7 +27,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" version = "0.52.0" [lints.clippy] @@ -43,7 +43,7 @@ members = [".", "examples/*", "fuzz", "edge/*", "benches/vs_*"] [workspace.package] edition = "2021" license = "Apache-2.0" -rust-version = "1.75" +rust-version = "1.80" version = "0.51.1" [features] @@ -173,6 +173,12 @@ services-obs = [ "reqsign?/reqwest_request", ] services-onedrive = [] +services-opfs = [ + "dep:js-sys", + "dep:wasm-bindgen", + "dep:wasm-bindgen-futures", + "dep:web-sys", +] services-oss = [ "dep:reqsign", "reqsign?/services-aliyun", @@ -204,7 +210,6 @@ services-vercel-blob = [] services-webdav = [] services-webhdfs = [] services-yandex-disk = [] -services-opfs = ["dep:js-sys", "dep:wasm-bindgen", "dep:wasm-bindgen-futures", "dep:web-sys"] [lib] bench = false @@ -242,12 +247,10 @@ futures = { version = "0.3", default-features = false, features = [ "std", "async-await", ] } +ghac = { version = "0.2.0", optional = true } http = "1.1" log = "0.4" md-5 = "0.10" -# TODO: remove once_cell when lazy_lock is stable: https://doc.rust-lang.org/std/cell/struct.LazyCell.html -ghac = { version = "0.2.0", optional = true } -once_cell = "1" percent-encoding = "2" quick-xml = { version = "0.36", features = ["serialize", "overlapped-lists"] } reqwest = { version = "0.12.2", features = [ @@ -360,8 +363,9 @@ monoio = { version = "0.2.4", optional = true, features = [ "renameat", ] } # for service-opfs +js-sys = { version = "0.3.77", optional = true } wasm-bindgen = { version = "0.2.100", optional = true } -wasm-bindgen-futures = { version = "0.4.50", optional = true} +wasm-bindgen-futures = { version = "0.4.50", optional = true } web-sys = { version = "0.3.77", optional = true, features = [ "Window", "File", @@ -373,8 +377,6 @@ web-sys = { version = "0.3.77", optional = true, features = [ "StorageManager", "FileSystemGetFileOptions", ] } -js-sys = { version = "0.3.77", optional = true} - # Layers # for layers-async-backtrace diff --git a/core/benches/types/concurrent_tasks.rs b/core/benches/types/concurrent_tasks.rs index 3e0948541..6501c3525 100644 --- a/core/benches/types/concurrent_tasks.rs +++ b/core/benches/types/concurrent_tasks.rs @@ -19,12 +19,12 @@ use std::time::Duration; use criterion::BatchSize; use criterion::Criterion; -use once_cell::sync::Lazy; use opendal::raw::ConcurrentTasks; use opendal::Executor; +use std::sync::LazyLock; -pub static TOKIO: Lazy<tokio::runtime::Runtime> = - Lazy::new(|| tokio::runtime::Runtime::new().expect("build tokio runtime")); +pub static TOKIO: LazyLock<tokio::runtime::Runtime> = + LazyLock::new(|| tokio::runtime::Runtime::new().expect("build tokio runtime")); pub fn bench_concurrent_tasks(c: &mut Criterion) { let mut group = c.benchmark_group("bench_concurrent_tasks"); diff --git a/core/benches/vs_fs/Cargo.toml b/core/benches/vs_fs/Cargo.toml index 2c8a75b60..18febb6ba 100644 --- a/core/benches/vs_fs/Cargo.toml +++ b/core/benches/vs_fs/Cargo.toml @@ -21,7 +21,7 @@ edition = "2021" license = "Apache-2.0" name = "opendal-benchmark-vs-fs" publish = false -rust-version = "1.75" +rust-version = "1.80" version = "0.0.0" [dependencies] diff --git a/core/benches/vs_s3/Cargo.toml b/core/benches/vs_s3/Cargo.toml index 0e73332da..b935af2fa 100644 --- a/core/benches/vs_s3/Cargo.toml +++ b/core/benches/vs_s3/Cargo.toml @@ -21,7 +21,7 @@ edition = "2021" license = "Apache-2.0" name = "opendal-benchmark-vs-s3" publish = false -rust-version = "1.75" +rust-version = "1.80" version = "0.0.0" [dependencies] diff --git a/core/fuzz/Cargo.toml b/core/fuzz/Cargo.toml index b5f342cc4..59cb7fa9a 100644 --- a/core/fuzz/Cargo.toml +++ b/core/fuzz/Cargo.toml @@ -20,7 +20,7 @@ edition = "2021" license = "Apache-2.0" name = "opendal-fuzz" publish = false -rust-version = "1.75" +rust-version = "1.80" version = "0.0.0" [package.metadata] diff --git a/core/src/layers/blocking.rs b/core/src/layers/blocking.rs index a3ddeffd9..baaf6c468 100644 --- a/core/src/layers/blocking.rs +++ b/core/src/layers/blocking.rs @@ -96,14 +96,14 @@ use crate::*; /// > runtime on demand. /// /// ```rust,no_run -/// # use once_cell::sync::Lazy; +/// # use std::sync::LazyLock; /// # use opendal::layers::BlockingLayer; /// # use opendal::services; /// # use opendal::BlockingOperator; /// # use opendal::Operator; /// # use opendal::Result; /// -/// static RUNTIME: Lazy<tokio::runtime::Runtime> = Lazy::new(|| { +/// static RUNTIME: LazyLock<tokio::runtime::Runtime> = LazyLock::new(|| { /// tokio::runtime::Builder::new_multi_thread() /// .enable_all() /// .build() @@ -310,12 +310,12 @@ impl<I: oio::Delete + 'static> oio::BlockingDelete for BlockingWrapper<I> { #[cfg(test)] mod tests { - use once_cell::sync::Lazy; + use std::sync::LazyLock; use super::*; use crate::types::Result; - static RUNTIME: Lazy<tokio::runtime::Runtime> = Lazy::new(|| { + static RUNTIME: LazyLock<tokio::runtime::Runtime> = LazyLock::new(|| { tokio::runtime::Builder::new_multi_thread() .enable_all() .build() diff --git a/core/src/layers/dtrace.rs b/core/src/layers/dtrace.rs index 35465ad14..e51e65f64 100644 --- a/core/src/layers/dtrace.rs +++ b/core/src/layers/dtrace.rs @@ -335,18 +335,16 @@ impl<R: oio::BlockingRead> oio::BlockingRead for DtraceLayerWrapper<R> { probe_lazy!(opendal, blocking_reader_read_start, c_path.as_ptr()); self.inner .read() - .map(|bs| { + .inspect(|bs| { probe_lazy!( opendal, blocking_reader_read_ok, c_path.as_ptr(), bs.remaining() ); - bs }) - .map_err(|e| { + .inspect_err(|_| { probe_lazy!(opendal, blocking_reader_read_error, c_path.as_ptr()); - e }) } } @@ -361,9 +359,8 @@ impl<R: oio::Write> oio::Write for DtraceLayerWrapper<R> { .map(|_| { probe_lazy!(opendal, writer_write_ok, c_path.as_ptr()); }) - .map_err(|err| { + .inspect_err(|_| { probe_lazy!(opendal, writer_write_error, c_path.as_ptr()); - err }) } @@ -376,9 +373,8 @@ impl<R: oio::Write> oio::Write for DtraceLayerWrapper<R> { .map(|_| { probe_lazy!(opendal, writer_poll_abort_ok, c_path.as_ptr()); }) - .map_err(|err| { + .inspect_err(|_| { probe_lazy!(opendal, writer_poll_abort_error, c_path.as_ptr()); - err }) } @@ -388,13 +384,11 @@ impl<R: oio::Write> oio::Write for DtraceLayerWrapper<R> { self.inner .close() .await - .map(|meta| { + .inspect(|_| { probe_lazy!(opendal, writer_close_ok, c_path.as_ptr()); - meta }) - .map_err(|err| { + .inspect_err(|_| { probe_lazy!(opendal, writer_close_error, c_path.as_ptr()); - err }) } } @@ -408,9 +402,8 @@ impl<R: oio::BlockingWrite> oio::BlockingWrite for DtraceLayerWrapper<R> { .map(|_| { probe_lazy!(opendal, blocking_writer_write_ok, c_path.as_ptr()); }) - .map_err(|err| { + .inspect_err(|_| { probe_lazy!(opendal, blocking_writer_write_error, c_path.as_ptr()); - err }) } @@ -419,13 +412,11 @@ impl<R: oio::BlockingWrite> oio::BlockingWrite for DtraceLayerWrapper<R> { probe_lazy!(opendal, blocking_writer_close_start, c_path.as_ptr()); self.inner .close() - .map(|meta| { + .inspect(|_| { probe_lazy!(opendal, blocking_writer_close_ok, c_path.as_ptr()); - meta }) - .map_err(|err| { + .inspect_err(|_| { probe_lazy!(opendal, blocking_writer_close_error, c_path.as_ptr()); - err }) } } diff --git a/core/src/layers/error_context.rs b/core/src/layers/error_context.rs index a6a1908a4..326409fd9 100644 --- a/core/src/layers/error_context.rs +++ b/core/src/layers/error_context.rs @@ -321,9 +321,8 @@ impl<T: oio::Read> oio::Read for ErrorContextWrapper<T> { self.inner .read() .await - .map(|bs| { + .inspect(|bs| { self.processed += bs.len() as u64; - bs }) .map_err(|err| { err.with_operation(Operation::ReaderRead) @@ -339,9 +338,8 @@ impl<T: oio::BlockingRead> oio::BlockingRead for ErrorContextWrapper<T> { fn read(&mut self) -> Result<Buffer> { self.inner .read() - .map(|bs| { + .inspect(|bs| { self.processed += bs.len() as u64; - bs }) .map_err(|err| { err.with_operation(Operation::ReaderRead) @@ -422,9 +420,8 @@ impl<T: oio::List> oio::List for ErrorContextWrapper<T> { self.inner .next() .await - .map(|bs| { + .inspect(|bs| { self.processed += bs.is_some() as u64; - bs }) .map_err(|err| { err.with_operation(Operation::ListerNext) @@ -439,9 +436,8 @@ impl<T: oio::BlockingList> oio::BlockingList for ErrorContextWrapper<T> { fn next(&mut self) -> Result<Option<oio::Entry>> { self.inner .next() - .map(|bs| { + .inspect(|bs| { self.processed += bs.is_some() as u64; - bs }) .map_err(|err| { err.with_operation(Operation::ListerNext) @@ -466,9 +462,8 @@ impl<T: oio::Delete> oio::Delete for ErrorContextWrapper<T> { self.inner .flush() .await - .map(|n| { + .inspect(|&n| { self.processed += n as u64; - n }) .map_err(|err| { err.with_operation(Operation::DeleterFlush) @@ -491,9 +486,8 @@ impl<T: oio::BlockingDelete> oio::BlockingDelete for ErrorContextWrapper<T> { fn flush(&mut self) -> Result<usize> { self.inner .flush() - .map(|n| { + .inspect(|&n| { self.processed += n as u64; - n }) .map_err(|err| { err.with_operation(Operation::DeleterFlush) diff --git a/core/src/layers/logging.rs b/core/src/layers/logging.rs index 953624166..d1b2c49fb 100644 --- a/core/src/layers/logging.rs +++ b/core/src/layers/logging.rs @@ -288,7 +288,7 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { self.inner .create_dir(path, args) .await - .map(|v| { + .inspect(|_| { self.logger.log( &self.info, Operation::CreateDir, @@ -296,17 +296,15 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { "finished", None, ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::CreateDir, &[("path", path)], "failed", - Some(&err), + Some(err), ); - err }) } @@ -335,15 +333,14 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { LoggingReader::new(self.info.clone(), self.logger.clone(), path, r), ) }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::ReaderStart, &[("path", path)], "failed", - Some(&err), + Some(err), ); - err }) } @@ -370,15 +367,14 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { let w = LoggingWriter::new(self.info.clone(), self.logger.clone(), path, w); (rp, w) }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::WriterStart, &[("path", path)], "failed", - Some(&err), + Some(err), ); - err }) } @@ -394,7 +390,7 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { self.inner .copy(from, to, args) .await - .map(|v| { + .inspect(|_| { self.logger.log( &self.info, Operation::Copy, @@ -402,17 +398,15 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { "finished", None, ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::Copy, &[("from", from), ("to", to)], "failed", - Some(&err), + Some(err), ); - err }) } @@ -428,7 +422,7 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { self.inner .rename(from, to, args) .await - .map(|v| { + .inspect(|_| { self.logger.log( &self.info, Operation::Rename, @@ -436,17 +430,15 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { "finished", None, ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::Rename, &[("from", from), ("to", to)], "failed", - Some(&err), + Some(err), ); - err }) } @@ -462,7 +454,7 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { self.inner .stat(path, args) .await - .map(|v| { + .inspect(|_| { self.logger.log( &self.info, Operation::Stat, @@ -470,17 +462,15 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { "finished", None, ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::Stat, &[("path", path)], "failed", - Some(&err), + Some(err), ); - err }) } @@ -497,15 +487,14 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { let d = LoggingDeleter::new(self.info.clone(), self.logger.clone(), d); (rp, d) }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::DeleterStart, &[], "failed", - Some(&err), + Some(err), ); - err }) } @@ -532,15 +521,14 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { let streamer = LoggingLister::new(self.info.clone(), self.logger.clone(), path, v); (rp, streamer) }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::ListerStart, &[("path", path)], "failed", - Some(&err), + Some(err), ); - err }) } @@ -556,7 +544,7 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { self.inner .presign(path, args) .await - .map(|v| { + .inspect(|_| { self.logger.log( &self.info, Operation::Presign, @@ -564,17 +552,15 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { "finished", None, ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::Presign, &[("path", path)], "failed", - Some(&err), + Some(err), ); - err }) } @@ -589,7 +575,7 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { self.inner .blocking_create_dir(path, args) - .map(|v| { + .inspect(|_| { self.logger.log( &self.info, Operation::CreateDir, @@ -597,17 +583,15 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { "finished", None, ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::CreateDir, &[("path", path)], "failed", - Some(&err), + Some(err), ); - err }) } @@ -633,15 +617,14 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { let r = LoggingReader::new(self.info.clone(), self.logger.clone(), path, r); (rp, r) }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::ReaderStart, &[("path", path)], "failed", - Some(&err), + Some(err), ); - err }) } @@ -667,15 +650,14 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { let w = LoggingWriter::new(self.info.clone(), self.logger.clone(), path, w); (rp, w) }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::WriterStart, &[("path", path)], "failed", - Some(&err), + Some(err), ); - err }) } @@ -690,7 +672,7 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { self.inner .blocking_copy(from, to, args) - .map(|v| { + .inspect(|_| { self.logger.log( &self.info, Operation::Copy, @@ -698,17 +680,15 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { "finished", None, ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::Copy, &[("from", from), ("to", to)], "", - Some(&err), + Some(err), ); - err }) } @@ -723,7 +703,7 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { self.inner .blocking_rename(from, to, args) - .map(|v| { + .inspect(|_| { self.logger.log( &self.info, Operation::Rename, @@ -731,17 +711,15 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { "finished", None, ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::Rename, &[("from", from), ("to", to)], "failed", - Some(&err), + Some(err), ); - err }) } @@ -756,7 +734,7 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { self.inner .blocking_stat(path, args) - .map(|v| { + .inspect(|_| { self.logger.log( &self.info, Operation::Stat, @@ -764,17 +742,15 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { "finished", None, ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::Stat, &[("path", path)], "failed", - Some(&err), + Some(err), ); - err }) } @@ -790,15 +766,14 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { let d = LoggingDeleter::new(self.info.clone(), self.logger.clone(), d); (rp, d) }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::DeleterStart, &[], "failed", - Some(&err), + Some(err), ); - err }) } @@ -824,15 +799,14 @@ impl<A: Access, I: LoggingInterceptor> LayeredAccess for LoggingAccessor<A, I> { let li = LoggingLister::new(self.info.clone(), self.logger.clone(), path, v); (rp, li) }) - .map_err(|err| { + .inspect_err(|err| { self.logger.log( &self.info, Operation::ListerStart, &[("path", path)], "", - Some(&err), + Some(err), ); - err }) } } diff --git a/core/src/layers/observe/metrics.rs b/core/src/layers/observe/metrics.rs index 7a73fcec1..5cff51021 100644 --- a/core/src/layers/observe/metrics.rs +++ b/core/src/layers/observe/metrics.rs @@ -245,23 +245,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { self.inner() .create_dir(path, args) .await - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), path, op, start.elapsed(), ); - v }) - .map_err(move |err| { + .inspect_err(move |err| { self.interceptor.observe_operation_errors_total( self.info.clone(), path, op, err.kind(), ); - err }) } @@ -273,23 +271,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { .inner .read(path, args) .await - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), path, op, start.elapsed(), ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.interceptor.observe_operation_errors_total( self.info.clone(), path, op, err.kind(), ); - err })?; Ok(( @@ -311,23 +307,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { .inner .write(path, args) .await - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), path, op, start.elapsed(), ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.interceptor.observe_operation_errors_total( self.info.clone(), path, op, err.kind(), ); - err })?; Ok(( @@ -348,23 +342,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { self.inner() .copy(from, to, args) .await - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), from, op, start.elapsed(), ); - v }) - .map_err(move |err| { + .inspect_err(move |err| { self.interceptor.observe_operation_errors_total( self.info.clone(), from, op, err.kind(), ); - err }) } @@ -375,23 +367,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { self.inner() .rename(from, to, args) .await - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), from, op, start.elapsed(), ); - v }) - .map_err(move |err| { + .inspect_err(move |err| { self.interceptor.observe_operation_errors_total( self.info.clone(), from, op, err.kind(), ); - err }) } @@ -402,23 +392,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { self.inner() .stat(path, args) .await - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), path, op, start.elapsed(), ); - v }) - .map_err(move |err| { + .inspect_err(move |err| { self.interceptor.observe_operation_errors_total( self.info.clone(), path, op, err.kind(), ); - err }) } @@ -430,23 +418,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { .inner .delete() .await - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), "", op, start.elapsed(), ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.interceptor.observe_operation_errors_total( self.info.clone(), "", op, err.kind(), ); - err })?; Ok(( @@ -468,23 +454,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { .inner .list(path, args) .await - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), path, op, start.elapsed(), ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.interceptor.observe_operation_errors_total( self.info.clone(), path, op, err.kind(), ); - err })?; Ok(( @@ -505,23 +489,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { self.inner() .presign(path, args) .await - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), path, op, start.elapsed(), ); - v }) - .map_err(move |err| { + .inspect_err(move |err| { self.interceptor.observe_operation_errors_total( self.info.clone(), path, op, err.kind(), ); - err }) } @@ -531,23 +513,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { let start = Instant::now(); self.inner() .blocking_create_dir(path, args) - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), path, op, start.elapsed(), ); - v }) - .map_err(move |err| { + .inspect_err(move |err| { self.interceptor.observe_operation_errors_total( self.info.clone(), path, op, err.kind(), ); - err }) } @@ -558,23 +538,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { let (rp, reader) = self .inner .blocking_read(path, args) - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), path, op, start.elapsed(), ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.interceptor.observe_operation_errors_total( self.info.clone(), path, op, err.kind(), ); - err })?; Ok(( @@ -595,23 +573,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { let (rp, writer) = self .inner .blocking_write(path, args) - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), path, op, start.elapsed(), ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.interceptor.observe_operation_errors_total( self.info.clone(), path, op, err.kind(), ); - err })?; Ok(( @@ -631,23 +607,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { let start = Instant::now(); self.inner() .blocking_copy(from, to, args) - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), from, op, start.elapsed(), ); - v }) - .map_err(move |err| { + .inspect_err(move |err| { self.interceptor.observe_operation_errors_total( self.info.clone(), from, op, err.kind(), ); - err }) } @@ -657,23 +631,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { let start = Instant::now(); self.inner() .blocking_rename(from, to, args) - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), from, op, start.elapsed(), ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.interceptor.observe_operation_errors_total( self.info.clone(), from, op, err.kind(), ); - err }) } @@ -683,23 +655,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { let start = Instant::now(); self.inner() .blocking_stat(path, args) - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), path, op, start.elapsed(), ); - v }) - .map_err(move |err| { + .inspect_err(move |err| { self.interceptor.observe_operation_errors_total( self.info.clone(), path, op, err.kind(), ); - err }) } @@ -710,23 +680,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { let (rp, writer) = self .inner .blocking_delete() - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), "", op, start.elapsed(), ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.interceptor.observe_operation_errors_total( self.info.clone(), "", op, err.kind(), ); - err })?; Ok(( @@ -747,23 +715,21 @@ impl<A: Access, I: MetricsIntercept> LayeredAccess for MetricsAccessor<A, I> { let (rp, lister) = self .inner .blocking_list(path, args) - .map(|v| { + .inspect(|_| { self.interceptor.observe_operation_duration_seconds( self.info.clone(), path, op, start.elapsed(), ); - v }) - .map_err(|err| { + .inspect_err(|err| { self.interceptor.observe_operation_errors_total( self.info.clone(), path, op, err.kind(), ); - err })?; Ok(( diff --git a/core/src/raw/http_util/client.rs b/core/src/raw/http_util/client.rs index 1e302cc0f..60038b8f2 100644 --- a/core/src/raw/http_util/client.rs +++ b/core/src/raw/http_util/client.rs @@ -27,8 +27,8 @@ use futures::Future; use futures::TryStreamExt; use http::Request; use http::Response; -use once_cell::sync::Lazy; use raw::oio::Read; +use std::sync::LazyLock; use super::parse_content_encoding; use super::parse_content_length; @@ -40,7 +40,8 @@ use crate::*; /// This is merely a temporary solution because reqsign requires a reqwest client to be passed. /// We will remove it after the next major version of reqsign, which will enable users to provide their own client. #[allow(dead_code)] -pub(crate) static GLOBAL_REQWEST_CLIENT: Lazy<reqwest::Client> = Lazy::new(reqwest::Client::new); +pub(crate) static GLOBAL_REQWEST_CLIENT: LazyLock<reqwest::Client> = + LazyLock::new(reqwest::Client::new); /// HttpFetcher is a type erased [`HttpFetch`]. pub type HttpFetcher = Arc<dyn HttpFetchDyn>; diff --git a/core/src/raw/tests/utils.rs b/core/src/raw/tests/utils.rs index 808788f71..76eeae356 100644 --- a/core/src/raw/tests/utils.rs +++ b/core/src/raw/tests/utils.rs @@ -19,12 +19,12 @@ use std::collections::HashMap; use std::env; use std::str::FromStr; -use once_cell::sync::Lazy; +use std::sync::LazyLock; use crate::*; /// TEST_RUNTIME is the runtime used for running tests. -pub static TEST_RUNTIME: Lazy<tokio::runtime::Runtime> = Lazy::new(|| { +pub static TEST_RUNTIME: LazyLock<tokio::runtime::Runtime> = LazyLock::new(|| { tokio::runtime::Builder::new_multi_thread() .enable_all() .build() diff --git a/core/src/services/gcs/core.rs b/core/src/services/gcs/core.rs index 8a6fd5475..d5326f09f 100644 --- a/core/src/services/gcs/core.rs +++ b/core/src/services/gcs/core.rs @@ -35,7 +35,6 @@ use http::header::IF_NONE_MATCH; use http::header::IF_UNMODIFIED_SINCE; use http::Request; use http::Response; -use once_cell::sync::Lazy; use reqsign::GoogleCredential; use reqsign::GoogleCredentialLoader; use reqsign::GoogleSigner; @@ -43,6 +42,7 @@ use reqsign::GoogleToken; use reqsign::GoogleTokenLoader; use serde::Deserialize; use serde::Serialize; +use std::sync::LazyLock; use super::uri::percent_encode_path; use crate::raw::*; @@ -83,8 +83,8 @@ impl Debug for GcsCore { } } -static BACKOFF: Lazy<ExponentialBuilder> = - Lazy::new(|| ExponentialBuilder::default().with_jitter()); +static BACKOFF: LazyLock<ExponentialBuilder> = + LazyLock::new(|| ExponentialBuilder::default().with_jitter()); impl GcsCore { async fn load_token(&self) -> Result<Option<GoogleToken>> { diff --git a/core/src/services/s3/backend.rs b/core/src/services/s3/backend.rs index 1693e1e5d..b0951eae4 100644 --- a/core/src/services/s3/backend.rs +++ b/core/src/services/s3/backend.rs @@ -32,13 +32,13 @@ use log::debug; use log::warn; use md5::Digest; use md5::Md5; -use once_cell::sync::Lazy; use reqsign::AwsAssumeRoleLoader; use reqsign::AwsConfig; use reqsign::AwsCredentialLoad; use reqsign::AwsDefaultLoader; use reqsign::AwsV4Signer; use reqwest::Url; +use std::sync::LazyLock; use super::core::*; use super::delete::S3Deleter; @@ -53,7 +53,7 @@ use crate::*; use constants::X_AMZ_VERSION_ID; /// Allow constructing correct region endpoint if user gives a global endpoint. -static ENDPOINT_TEMPLATES: Lazy<HashMap<&'static str, &'static str>> = Lazy::new(|| { +static ENDPOINT_TEMPLATES: LazyLock<HashMap<&'static str, &'static str>> = LazyLock::new(|| { let mut m = HashMap::new(); // AWS S3 Service. m.insert( diff --git a/core/src/types/error.rs b/core/src/types/error.rs index 01c489bfc..e5dbe9ece 100644 --- a/core/src/types/error.rs +++ b/core/src/types/error.rs @@ -429,12 +429,12 @@ impl From<Error> for io::Error { #[cfg(test)] mod tests { use anyhow::anyhow; - use once_cell::sync::Lazy; use pretty_assertions::assert_eq; + use std::sync::LazyLock; use super::*; - static TEST_ERROR: Lazy<Error> = Lazy::new(|| Error { + static TEST_ERROR: LazyLock<Error> = LazyLock::new(|| Error { kind: ErrorKind::Unexpected, message: "something wrong happened".to_string(), status: ErrorStatus::Permanent, @@ -449,17 +449,17 @@ mod tests { #[test] fn test_error_display() { - let s = format!("{}", Lazy::force(&TEST_ERROR)); + let s = format!("{}", LazyLock::force(&TEST_ERROR)); assert_eq!( s, r#"Unexpected (permanent) at Read, context: { path: /path/to/file, called: send_async } => something wrong happened, source: networking error"# ); - println!("{:#?}", Lazy::force(&TEST_ERROR)); + println!("{:#?}", LazyLock::force(&TEST_ERROR)); } #[test] fn test_error_debug() { - let s = format!("{:?}", Lazy::force(&TEST_ERROR)); + let s = format!("{:?}", LazyLock::force(&TEST_ERROR)); assert_eq!( s, r#"Unexpected (permanent) at Read => something wrong happened diff --git a/dev/Cargo.toml b/dev/Cargo.toml index f4a5d85d2..28f157740 100644 --- a/dev/Cargo.toml +++ b/dev/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" version = "0.0.1" [dependencies] diff --git a/integrations/cloud_filter/Cargo.toml b/integrations/cloud_filter/Cargo.toml index a11e52a04..dc9413cac 100644 --- a/integrations/cloud_filter/Cargo.toml +++ b/integrations/cloud_filter/Cargo.toml @@ -23,7 +23,7 @@ homepage = "https://opendal.apache.org/" license = "Apache-2.0" name = "cloud_filter_opendal" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" version = "0.0.6" [package.metadata.docs.rs] diff --git a/integrations/dav-server/Cargo.toml b/integrations/dav-server/Cargo.toml index 54275abbd..3762d7122 100644 --- a/integrations/dav-server/Cargo.toml +++ b/integrations/dav-server/Cargo.toml @@ -25,7 +25,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" [dependencies] anyhow = "1" diff --git a/integrations/fuse3/Cargo.toml b/integrations/fuse3/Cargo.toml index e9fee2e14..789e3318f 100644 --- a/integrations/fuse3/Cargo.toml +++ b/integrations/fuse3/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" version = "0.0.13" [dependencies] diff --git a/integrations/object_store/Cargo.toml b/integrations/object_store/Cargo.toml index 34e6a3aae..328703d41 100644 --- a/integrations/object_store/Cargo.toml +++ b/integrations/object_store/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" version = "0.50.0" [features] diff --git a/integrations/parquet/Cargo.toml b/integrations/parquet/Cargo.toml index 151ba6917..7da3fc95e 100644 --- a/integrations/parquet/Cargo.toml +++ b/integrations/parquet/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" version = "0.4.0" [dependencies] diff --git a/integrations/unftp-sbe/Cargo.toml b/integrations/unftp-sbe/Cargo.toml index 85e0f6185..7521483b7 100644 --- a/integrations/unftp-sbe/Cargo.toml +++ b/integrations/unftp-sbe/Cargo.toml @@ -23,7 +23,7 @@ homepage = "https://opendal.apache.org/" license = "Apache-2.0" name = "unftp-sbe-opendal" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" version = "0.0.13" [dependencies] diff --git a/integrations/virtiofs/Cargo.toml b/integrations/virtiofs/Cargo.toml index 5ca8efe70..63fbadec9 100644 --- a/integrations/virtiofs/Cargo.toml +++ b/integrations/virtiofs/Cargo.toml @@ -24,7 +24,7 @@ edition = "2021" homepage = "https://opendal.apache.org/" license = "Apache-2.0" repository = "https://github.com/apache/opendal" -rust-version = "1.75" +rust-version = "1.80" version = "0.0.0" [dependencies]