You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by xu...@apache.org on 2024/08/06 07:50:36 UTC
(opendal) 01/01: refactor(core)!: Return associated builder instead
This is an automated email from the ASF dual-hosted git repository.
xuanwo pushed a commit to branch into_builder
in repository https://gitbox.apache.org/repos/asf/opendal.git
commit 07a280454f4933acae657454c5cb92bcbe48c4cb
Author: Xuanwo <gi...@xuanwo.io>
AuthorDate: Tue Aug 6 15:50:14 2024 +0800
refactor(core)!: Return associated builder instead
Signed-off-by: Xuanwo <gi...@xuanwo.io>
---
core/src/docs/upgrade.md | 3 ++-
core/src/services/aliyun_drive/backend.rs | 3 ++-
core/src/services/alluxio/backend.rs | 3 ++-
core/src/services/atomicserver/backend.rs | 3 ++-
core/src/services/azblob/backend.rs | 3 ++-
core/src/services/azdls/backend.rs | 3 ++-
core/src/services/azfile/backend.rs | 3 ++-
core/src/services/b2/backend.rs | 3 ++-
core/src/services/cacache/backend.rs | 3 ++-
core/src/services/chainsafe/backend.rs | 3 ++-
core/src/services/cloudflare_kv/backend.rs | 3 ++-
core/src/services/compfs/backend.rs | 3 ++-
core/src/services/cos/backend.rs | 3 ++-
core/src/services/d1/backend.rs | 3 ++-
core/src/services/dashmap/backend.rs | 3 ++-
core/src/services/dbfs/backend.rs | 3 ++-
core/src/services/dropbox/builder.rs | 3 ++-
core/src/services/etcd/backend.rs | 3 ++-
core/src/services/foundationdb/backend.rs | 13 +++++-----
core/src/services/foundationdb/mod.rs | 2 +-
core/src/services/fs/backend.rs | 3 ++-
core/src/services/ftp/backend.rs | 3 ++-
core/src/services/gcs/backend.rs | 3 ++-
core/src/services/gdrive/builder.rs | 3 ++-
core/src/services/ghac/backend.rs | 3 ++-
core/src/services/github/backend.rs | 3 ++-
core/src/services/gridfs/backend.rs | 3 ++-
core/src/services/hdfs/backend.rs | 3 ++-
core/src/services/hdfs_native/backend.rs | 3 ++-
core/src/services/http/backend.rs | 3 ++-
core/src/services/huggingface/backend.rs | 3 ++-
core/src/services/icloud/backend.rs | 3 ++-
core/src/services/ipfs/backend.rs | 3 ++-
core/src/services/ipmfs/builder.rs | 3 ++-
core/src/services/koofr/backend.rs | 3 ++-
core/src/services/libsql/backend.rs | 3 ++-
core/src/services/memcached/backend.rs | 3 ++-
core/src/services/memory/backend.rs | 3 ++-
core/src/services/mini_moka/backend.rs | 3 ++-
core/src/services/mod.rs | 4 +--
core/src/services/moka/backend.rs | 3 ++-
core/src/services/mongodb/backend.rs | 3 ++-
core/src/services/monoiofs/backend.rs | 3 ++-
core/src/services/mysql/backend.rs | 3 ++-
core/src/services/obs/backend.rs | 3 ++-
core/src/services/onedrive/builder.rs | 3 ++-
core/src/services/oss/backend.rs | 3 ++-
core/src/services/pcloud/backend.rs | 3 ++-
core/src/services/persy/backend.rs | 3 ++-
core/src/services/postgresql/backend.rs | 3 ++-
core/src/services/redb/backend.rs | 3 ++-
core/src/services/redis/backend.rs | 3 ++-
core/src/services/rocksdb/backend.rs | 3 ++-
core/src/services/s3/backend.rs | 3 ++-
core/src/services/seafile/backend.rs | 3 ++-
core/src/services/sftp/backend.rs | 3 ++-
core/src/services/sled/backend.rs | 3 ++-
core/src/services/sqlite/backend.rs | 3 ++-
core/src/services/supabase/backend.rs | 3 ++-
core/src/services/surrealdb/backend.rs | 3 ++-
core/src/services/swift/backend.rs | 3 ++-
core/src/services/tikv/backend.rs | 3 ++-
core/src/services/upyun/backend.rs | 3 ++-
core/src/services/vercel_artifacts/builder.rs | 3 ++-
core/src/services/vercel_blob/backend.rs | 3 ++-
core/src/services/webdav/backend.rs | 3 ++-
core/src/services/webhdfs/backend.rs | 3 ++-
core/src/services/yandex_disk/backend.rs | 3 ++-
core/src/types/builder.rs | 35 +++++++++++++++++++++++++--
69 files changed, 173 insertions(+), 76 deletions(-)
diff --git a/core/src/docs/upgrade.md b/core/src/docs/upgrade.md
index cf6a479fd6..8963902657 100644
--- a/core/src/docs/upgrade.md
+++ b/core/src/docs/upgrade.md
@@ -86,7 +86,8 @@ Service implementers should update their code to use the `Configurator` trait in
```rust
impl Configurator for MemoryConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = MemoryBuilder;
+ fn into_builder(self) -> Self::Builder {
MemoryBuilder { config: self }
}
}
diff --git a/core/src/services/aliyun_drive/backend.rs b/core/src/services/aliyun_drive/backend.rs
index 77ed6ac40b..7dc5ba5c21 100644
--- a/core/src/services/aliyun_drive/backend.rs
+++ b/core/src/services/aliyun_drive/backend.rs
@@ -89,7 +89,8 @@ impl Debug for AliyunDriveConfig {
}
impl Configurator for AliyunDriveConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = AliyunDriveBuilder;
+ fn into_builder(self) -> Self::Builder {
AliyunDriveBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/alluxio/backend.rs b/core/src/services/alluxio/backend.rs
index 6d9aec73a1..bd998430b1 100644
--- a/core/src/services/alluxio/backend.rs
+++ b/core/src/services/alluxio/backend.rs
@@ -61,7 +61,8 @@ impl Debug for AlluxioConfig {
}
impl Configurator for AlluxioConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = AlluxioBuilder;
+ fn into_builder(self) -> Self::Builder {
AlluxioBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/atomicserver/backend.rs b/core/src/services/atomicserver/backend.rs
index 5812b41d38..eb61f61283 100644
--- a/core/src/services/atomicserver/backend.rs
+++ b/core/src/services/atomicserver/backend.rs
@@ -63,7 +63,8 @@ impl Debug for AtomicserverConfig {
}
impl Configurator for AtomicserverConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = AtomicserverBuilder;
+ fn into_builder(self) -> Self::Builder {
AtomicserverBuilder { config: self }
}
}
diff --git a/core/src/services/azblob/backend.rs b/core/src/services/azblob/backend.rs
index 3c907d397f..d97f5b8405 100644
--- a/core/src/services/azblob/backend.rs
+++ b/core/src/services/azblob/backend.rs
@@ -119,7 +119,8 @@ impl Debug for AzblobConfig {
}
impl Configurator for AzblobConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = AzblobBuilder;
+ fn into_builder(self) -> Self::Builder {
AzblobBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/azdls/backend.rs b/core/src/services/azdls/backend.rs
index b4489b557e..baa68ae14f 100644
--- a/core/src/services/azdls/backend.rs
+++ b/core/src/services/azdls/backend.rs
@@ -81,7 +81,8 @@ impl Debug for AzdlsConfig {
}
impl Configurator for AzdlsConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = AzdlsBuilder;
+ fn into_builder(self) -> Self::Builder {
AzdlsBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/azfile/backend.rs b/core/src/services/azfile/backend.rs
index 4fe74c9fcb..5390e02556 100644
--- a/core/src/services/azfile/backend.rs
+++ b/core/src/services/azfile/backend.rs
@@ -79,7 +79,8 @@ impl Debug for AzfileConfig {
}
impl Configurator for AzfileConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = AzfileBuilder;
+ fn into_builder(self) -> Self::Builder {
AzfileBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/b2/backend.rs b/core/src/services/b2/backend.rs
index 2a7de8922f..18fb45d53d 100644
--- a/core/src/services/b2/backend.rs
+++ b/core/src/services/b2/backend.rs
@@ -83,7 +83,8 @@ impl Debug for B2Config {
}
impl Configurator for B2Config {
- fn into_builder(self) -> impl Builder {
+ type Builder = B2Builder;
+ fn into_builder(self) -> Self::Builder {
B2Builder {
config: self,
http_client: None,
diff --git a/core/src/services/cacache/backend.rs b/core/src/services/cacache/backend.rs
index 5e1d6112ff..977127f9ca 100644
--- a/core/src/services/cacache/backend.rs
+++ b/core/src/services/cacache/backend.rs
@@ -39,7 +39,8 @@ pub struct CacacheConfig {
}
impl Configurator for CacacheConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = CacacheBuilder;
+ fn into_builder(self) -> Self::Builder {
CacacheBuilder { config: self }
}
}
diff --git a/core/src/services/chainsafe/backend.rs b/core/src/services/chainsafe/backend.rs
index 2431d0e261..88640c578d 100644
--- a/core/src/services/chainsafe/backend.rs
+++ b/core/src/services/chainsafe/backend.rs
@@ -65,7 +65,8 @@ impl Debug for ChainsafeConfig {
}
impl Configurator for ChainsafeConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = ChainsafeBuilder;
+ fn into_builder(self) -> Self::Builder {
ChainsafeBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/cloudflare_kv/backend.rs b/core/src/services/cloudflare_kv/backend.rs
index 0ce628e507..7184ce0e9e 100644
--- a/core/src/services/cloudflare_kv/backend.rs
+++ b/core/src/services/cloudflare_kv/backend.rs
@@ -62,7 +62,8 @@ impl Debug for CloudflareKvConfig {
}
impl Configurator for CloudflareKvConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = CloudflareKvBuilder;
+ fn into_builder(self) -> Self::Builder {
CloudflareKvBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/compfs/backend.rs b/core/src/services/compfs/backend.rs
index d2fa7f5d20..f866ccec07 100644
--- a/core/src/services/compfs/backend.rs
+++ b/core/src/services/compfs/backend.rs
@@ -40,7 +40,8 @@ pub struct CompfsConfig {
}
impl Configurator for CompfsConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = CompfsBuilder;
+ fn into_builder(self) -> Self::Builder {
CompfsBuilder { config: self }
}
}
diff --git a/core/src/services/cos/backend.rs b/core/src/services/cos/backend.rs
index d94201490e..a900aba741 100644
--- a/core/src/services/cos/backend.rs
+++ b/core/src/services/cos/backend.rs
@@ -67,7 +67,8 @@ impl Debug for CosConfig {
}
impl Configurator for CosConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = CosBuilder;
+ fn into_builder(self) -> Self::Builder {
CosBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/d1/backend.rs b/core/src/services/d1/backend.rs
index ae0fb132ed..e6aaa6da4e 100644
--- a/core/src/services/d1/backend.rs
+++ b/core/src/services/d1/backend.rs
@@ -67,7 +67,8 @@ impl Debug for D1Config {
}
impl Configurator for D1Config {
- fn into_builder(self) -> impl Builder {
+ type Builder = D1Builder;
+ fn into_builder(self) -> Self::Builder {
D1Builder {
config: self,
http_client: None,
diff --git a/core/src/services/dashmap/backend.rs b/core/src/services/dashmap/backend.rs
index 8b4d8d728c..ac359ee4c4 100644
--- a/core/src/services/dashmap/backend.rs
+++ b/core/src/services/dashmap/backend.rs
@@ -34,7 +34,8 @@ pub struct DashmapConfig {
}
impl Configurator for DashmapConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = DashmapBuilder;
+ fn into_builder(self) -> Self::Builder {
DashmapBuilder { config: self }
}
}
diff --git a/core/src/services/dbfs/backend.rs b/core/src/services/dbfs/backend.rs
index 4673ceb4e0..542722a3e0 100644
--- a/core/src/services/dbfs/backend.rs
+++ b/core/src/services/dbfs/backend.rs
@@ -59,7 +59,8 @@ impl Debug for DbfsConfig {
}
impl Configurator for DbfsConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = DbfsBuilder;
+ fn into_builder(self) -> Self::Builder {
DbfsBuilder { config: self }
}
}
diff --git a/core/src/services/dropbox/builder.rs b/core/src/services/dropbox/builder.rs
index 29ee07a852..bef4e2421e 100644
--- a/core/src/services/dropbox/builder.rs
+++ b/core/src/services/dropbox/builder.rs
@@ -57,7 +57,8 @@ impl Debug for DropboxConfig {
}
impl Configurator for DropboxConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = DropboxBuilder;
+ fn into_builder(self) -> Self::Builder {
DropboxBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/etcd/backend.rs b/core/src/services/etcd/backend.rs
index 90eee72566..3344a951cf 100644
--- a/core/src/services/etcd/backend.rs
+++ b/core/src/services/etcd/backend.rs
@@ -102,7 +102,8 @@ impl Debug for EtcdConfig {
}
impl Configurator for EtcdConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = EtcdBuilder;
+ fn into_builder(self) -> Self::Builder {
EtcdBuilder { config: self }
}
}
diff --git a/core/src/services/foundationdb/backend.rs b/core/src/services/foundationdb/backend.rs
index 34fbe5f5be..2a83bffdeb 100644
--- a/core/src/services/foundationdb/backend.rs
+++ b/core/src/services/foundationdb/backend.rs
@@ -37,14 +37,14 @@ use crate::*;
#[derive(Default, Serialize, Deserialize, Clone, PartialEq, Eq)]
#[serde(default)]
#[non_exhaustive]
-pub struct FoundationConfig {
+pub struct FoundationdbConfig {
///root of the backend.
pub root: Option<String>,
///config_path for the backend.
pub config_path: Option<String>,
}
-impl Debug for FoundationConfig {
+impl Debug for FoundationdbConfig {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
let mut ds = f.debug_struct("FoundationConfig");
@@ -55,8 +55,9 @@ impl Debug for FoundationConfig {
}
}
-impl Configurator for FoundationConfig {
- fn into_builder(self) -> impl Builder {
+impl Configurator for FoundationdbConfig {
+ type Builder = FoundationdbBuilder;
+ fn into_builder(self) -> Self::Builder {
FoundationdbBuilder { config: self }
}
}
@@ -64,7 +65,7 @@ impl Configurator for FoundationConfig {
#[doc = include_str!("docs.md")]
#[derive(Default)]
pub struct FoundationdbBuilder {
- config: FoundationConfig,
+ config: FoundationdbConfig,
}
impl FoundationdbBuilder {
@@ -83,7 +84,7 @@ impl FoundationdbBuilder {
impl Builder for FoundationdbBuilder {
const SCHEME: Scheme = Scheme::Foundationdb;
- type Config = FoundationConfig;
+ type Config = FoundationdbConfig;
fn build(self) -> Result<impl Access> {
let _network = Arc::new(unsafe { foundationdb::boot() });
diff --git a/core/src/services/foundationdb/mod.rs b/core/src/services/foundationdb/mod.rs
index 10d196dff7..a761e25a47 100644
--- a/core/src/services/foundationdb/mod.rs
+++ b/core/src/services/foundationdb/mod.rs
@@ -17,5 +17,5 @@
mod backend;
-pub use backend::FoundationConfig;
pub use backend::FoundationdbBuilder as Foundationdb;
+pub use backend::FoundationdbConfig;
diff --git a/core/src/services/fs/backend.rs b/core/src/services/fs/backend.rs
index 0559fa7c57..93bdd445ad 100644
--- a/core/src/services/fs/backend.rs
+++ b/core/src/services/fs/backend.rs
@@ -46,7 +46,8 @@ pub struct FsConfig {
}
impl Configurator for FsConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = FsBuilder;
+ fn into_builder(self) -> Self::Builder {
FsBuilder { config: self }
}
}
diff --git a/core/src/services/ftp/backend.rs b/core/src/services/ftp/backend.rs
index c277cfac7b..1d5cb84b03 100644
--- a/core/src/services/ftp/backend.rs
+++ b/core/src/services/ftp/backend.rs
@@ -71,7 +71,8 @@ impl Debug for FtpConfig {
}
impl Configurator for FtpConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = FtpBuilder;
+ fn into_builder(self) -> Self::Builder {
FtpBuilder { config: self }
}
}
diff --git a/core/src/services/gcs/backend.rs b/core/src/services/gcs/backend.rs
index afeb38653d..d00c740ea8 100644
--- a/core/src/services/gcs/backend.rs
+++ b/core/src/services/gcs/backend.rs
@@ -80,7 +80,8 @@ impl Debug for GcsConfig {
}
impl Configurator for GcsConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = GcsBuilder;
+ fn into_builder(self) -> Self::Builder {
GcsBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/gdrive/builder.rs b/core/src/services/gdrive/builder.rs
index 07e1128e66..fc3b9b8385 100644
--- a/core/src/services/gdrive/builder.rs
+++ b/core/src/services/gdrive/builder.rs
@@ -63,7 +63,8 @@ impl Debug for GdriveConfig {
}
impl Configurator for GdriveConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = GdriveBuilder;
+ fn into_builder(self) -> Self::Builder {
GdriveBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/ghac/backend.rs b/core/src/services/ghac/backend.rs
index 7333f92184..4698de168f 100644
--- a/core/src/services/ghac/backend.rs
+++ b/core/src/services/ghac/backend.rs
@@ -97,7 +97,8 @@ pub struct GhacConfig {
}
impl Configurator for GhacConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = GhacBuilder;
+ fn into_builder(self) -> Self::Builder {
GhacBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/github/backend.rs b/core/src/services/github/backend.rs
index b45fefe983..f33bd0554a 100644
--- a/core/src/services/github/backend.rs
+++ b/core/src/services/github/backend.rs
@@ -73,7 +73,8 @@ impl Debug for GithubConfig {
}
impl Configurator for GithubConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = GithubBuilder;
+ fn into_builder(self) -> Self::Builder {
GithubBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/gridfs/backend.rs b/core/src/services/gridfs/backend.rs
index a0396f2279..6c36776fa4 100644
--- a/core/src/services/gridfs/backend.rs
+++ b/core/src/services/gridfs/backend.rs
@@ -62,7 +62,8 @@ impl Debug for GridFsConfig {
}
impl Configurator for GridFsConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = GridFsBuilder;
+ fn into_builder(self) -> Self::Builder {
GridFsBuilder { config: self }
}
}
diff --git a/core/src/services/hdfs/backend.rs b/core/src/services/hdfs/backend.rs
index 857bd6a710..ff240c248c 100644
--- a/core/src/services/hdfs/backend.rs
+++ b/core/src/services/hdfs/backend.rs
@@ -72,7 +72,8 @@ impl Debug for HdfsConfig {
}
impl Configurator for HdfsConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = HdfsBuilder;
+ fn into_builder(self) -> Self::Builder {
HdfsBuilder { config: self }
}
}
diff --git a/core/src/services/hdfs_native/backend.rs b/core/src/services/hdfs_native/backend.rs
index de7d830a8e..d8c9edc3cf 100644
--- a/core/src/services/hdfs_native/backend.rs
+++ b/core/src/services/hdfs_native/backend.rs
@@ -59,7 +59,8 @@ impl Debug for HdfsNativeConfig {
}
impl Configurator for HdfsNativeConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = HdfsNativeBuilder;
+ fn into_builder(self) -> Self::Builder {
HdfsNativeBuilder { config: self }
}
}
diff --git a/core/src/services/http/backend.rs b/core/src/services/http/backend.rs
index dfd6efd140..7256616621 100644
--- a/core/src/services/http/backend.rs
+++ b/core/src/services/http/backend.rs
@@ -61,7 +61,8 @@ impl Debug for HttpConfig {
}
impl Configurator for HttpConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = HttpBuilder;
+ fn into_builder(self) -> Self::Builder {
HttpBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/huggingface/backend.rs b/core/src/services/huggingface/backend.rs
index 5b025197d7..712c895edf 100644
--- a/core/src/services/huggingface/backend.rs
+++ b/core/src/services/huggingface/backend.rs
@@ -87,7 +87,8 @@ impl Debug for HuggingfaceConfig {
}
impl Configurator for HuggingfaceConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = HuggingfaceBuilder;
+ fn into_builder(self) -> Self::Builder {
HuggingfaceBuilder { config: self }
}
}
diff --git a/core/src/services/icloud/backend.rs b/core/src/services/icloud/backend.rs
index 37b8146c7a..583d61a0f0 100644
--- a/core/src/services/icloud/backend.rs
+++ b/core/src/services/icloud/backend.rs
@@ -72,7 +72,8 @@ impl Debug for IcloudConfig {
}
impl Configurator for IcloudConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = IcloudBuilder;
+ fn into_builder(self) -> Self::Builder {
IcloudBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/ipfs/backend.rs b/core/src/services/ipfs/backend.rs
index b9ffda9791..3eeda15b97 100644
--- a/core/src/services/ipfs/backend.rs
+++ b/core/src/services/ipfs/backend.rs
@@ -44,7 +44,8 @@ pub struct IpfsConfig {
}
impl Configurator for IpfsConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = IpfsBuilder;
+ fn into_builder(self) -> Self::Builder {
IpfsBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/ipmfs/builder.rs b/core/src/services/ipmfs/builder.rs
index ab6f150ae3..9704888215 100644
--- a/core/src/services/ipmfs/builder.rs
+++ b/core/src/services/ipmfs/builder.rs
@@ -35,7 +35,8 @@ pub struct IpmfsConfig {
}
impl Configurator for IpmfsConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = IpmfsBuilder;
+ fn into_builder(self) -> Self::Builder {
IpmfsBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/koofr/backend.rs b/core/src/services/koofr/backend.rs
index 71728c15ef..7809e35eae 100644
--- a/core/src/services/koofr/backend.rs
+++ b/core/src/services/koofr/backend.rs
@@ -67,7 +67,8 @@ impl Debug for KoofrConfig {
}
impl Configurator for KoofrConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = KoofrBuilder;
+ fn into_builder(self) -> Self::Builder {
KoofrBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/libsql/backend.rs b/core/src/services/libsql/backend.rs
index 8cf007902e..70bdfb9219 100644
--- a/core/src/services/libsql/backend.rs
+++ b/core/src/services/libsql/backend.rs
@@ -81,7 +81,8 @@ impl Debug for LibsqlConfig {
}
impl Configurator for LibsqlConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = LibsqlBuilder;
+ fn into_builder(self) -> Self::Builder {
LibsqlBuilder { config: self }
}
}
diff --git a/core/src/services/memcached/backend.rs b/core/src/services/memcached/backend.rs
index ccdbaabb8d..4f516bfc82 100644
--- a/core/src/services/memcached/backend.rs
+++ b/core/src/services/memcached/backend.rs
@@ -50,7 +50,8 @@ pub struct MemcachedConfig {
}
impl Configurator for MemcachedConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = MemcachedBuilder;
+ fn into_builder(self) -> Self::Builder {
MemcachedBuilder { config: self }
}
}
diff --git a/core/src/services/memory/backend.rs b/core/src/services/memory/backend.rs
index ed14c74a15..ef7ca83760 100644
--- a/core/src/services/memory/backend.rs
+++ b/core/src/services/memory/backend.rs
@@ -37,7 +37,8 @@ pub struct MemoryConfig {
}
impl Configurator for MemoryConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = MemoryBuilder;
+ fn into_builder(self) -> Self::Builder {
MemoryBuilder { config: self }
}
}
diff --git a/core/src/services/mini_moka/backend.rs b/core/src/services/mini_moka/backend.rs
index 9cb0a1773b..6373d157f9 100644
--- a/core/src/services/mini_moka/backend.rs
+++ b/core/src/services/mini_moka/backend.rs
@@ -48,7 +48,8 @@ pub struct MiniMokaConfig {
}
impl Configurator for MiniMokaConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = MiniMokaBuilder;
+ fn into_builder(self) -> Self::Builder {
MiniMokaBuilder { config: self }
}
}
diff --git a/core/src/services/mod.rs b/core/src/services/mod.rs
index bc7c9de65e..10e9aa7f2e 100644
--- a/core/src/services/mod.rs
+++ b/core/src/services/mod.rs
@@ -316,9 +316,9 @@ pub use self::tikv::TikvConfig;
#[cfg(feature = "services-foundationdb")]
mod foundationdb;
#[cfg(feature = "services-foundationdb")]
-pub use self::foundationdb::FoundationConfig;
-#[cfg(feature = "services-foundationdb")]
pub use self::foundationdb::Foundationdb;
+#[cfg(feature = "services-foundationdb")]
+pub use self::foundationdb::FoundationdbConfig;
#[cfg(feature = "services-postgresql")]
mod postgresql;
diff --git a/core/src/services/moka/backend.rs b/core/src/services/moka/backend.rs
index 7ad68a1760..13e8fc7302 100644
--- a/core/src/services/moka/backend.rs
+++ b/core/src/services/moka/backend.rs
@@ -67,7 +67,8 @@ impl Debug for MokaConfig {
}
impl Configurator for MokaConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = MokaBuilder;
+ fn into_builder(self) -> Self::Builder {
MokaBuilder { config: self }
}
}
diff --git a/core/src/services/mongodb/backend.rs b/core/src/services/mongodb/backend.rs
index 05e767902c..d700b08d38 100644
--- a/core/src/services/mongodb/backend.rs
+++ b/core/src/services/mongodb/backend.rs
@@ -63,7 +63,8 @@ impl Debug for MongodbConfig {
}
impl Configurator for MongodbConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = MongodbBuilder;
+ fn into_builder(self) -> Self::Builder {
MongodbBuilder { config: self }
}
}
diff --git a/core/src/services/monoiofs/backend.rs b/core/src/services/monoiofs/backend.rs
index e050269330..579d932867 100644
--- a/core/src/services/monoiofs/backend.rs
+++ b/core/src/services/monoiofs/backend.rs
@@ -41,7 +41,8 @@ pub struct MonoiofsConfig {
}
impl Configurator for MonoiofsConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = MonoiofsBuilder;
+ fn into_builder(self) -> Self::Builder {
MonoiofsBuilder { config: self }
}
}
diff --git a/core/src/services/mysql/backend.rs b/core/src/services/mysql/backend.rs
index b5e6179c5b..e3bd1f02dc 100644
--- a/core/src/services/mysql/backend.rs
+++ b/core/src/services/mysql/backend.rs
@@ -62,7 +62,8 @@ impl Debug for MysqlConfig {
}
impl Configurator for MysqlConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = MysqlBuilder;
+ fn into_builder(self) -> Self::Builder {
MysqlBuilder { config: self }
}
}
diff --git a/core/src/services/obs/backend.rs b/core/src/services/obs/backend.rs
index 306ed1734e..071a0cda01 100644
--- a/core/src/services/obs/backend.rs
+++ b/core/src/services/obs/backend.rs
@@ -67,7 +67,8 @@ impl Debug for ObsConfig {
}
impl Configurator for ObsConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = ObsBuilder;
+ fn into_builder(self) -> Self::Builder {
ObsBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/onedrive/builder.rs b/core/src/services/onedrive/builder.rs
index d2bf3f2534..4f0ae806d6 100644
--- a/core/src/services/onedrive/builder.rs
+++ b/core/src/services/onedrive/builder.rs
@@ -49,7 +49,8 @@ impl Debug for OnedriveConfig {
}
impl Configurator for OnedriveConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = OnedriveBuilder;
+ fn into_builder(self) -> Self::Builder {
OnedriveBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/oss/backend.rs b/core/src/services/oss/backend.rs
index a3563bc1dd..b9e3d44a71 100644
--- a/core/src/services/oss/backend.rs
+++ b/core/src/services/oss/backend.rs
@@ -86,7 +86,8 @@ impl Debug for OssConfig {
}
impl Configurator for OssConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = OssBuilder;
+ fn into_builder(self) -> Self::Builder {
OssBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/pcloud/backend.rs b/core/src/services/pcloud/backend.rs
index 8afd38e553..a07fdd5472 100644
--- a/core/src/services/pcloud/backend.rs
+++ b/core/src/services/pcloud/backend.rs
@@ -65,7 +65,8 @@ impl Debug for PcloudConfig {
}
impl Configurator for PcloudConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = PcloudBuilder;
+ fn into_builder(self) -> Self::Builder {
PcloudBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/persy/backend.rs b/core/src/services/persy/backend.rs
index c285f636e3..7b5c0c1fdd 100644
--- a/core/src/services/persy/backend.rs
+++ b/core/src/services/persy/backend.rs
@@ -46,7 +46,8 @@ pub struct PersyConfig {
}
impl Configurator for PersyConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = PersyBuilder;
+ fn into_builder(self) -> Self::Builder {
PersyBuilder { config: self }
}
}
diff --git a/core/src/services/postgresql/backend.rs b/core/src/services/postgresql/backend.rs
index 2864cb03ae..fa053562a7 100644
--- a/core/src/services/postgresql/backend.rs
+++ b/core/src/services/postgresql/backend.rs
@@ -69,7 +69,8 @@ impl Debug for PostgresqlConfig {
}
impl Configurator for PostgresqlConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = PostgresqlBuilder;
+ fn into_builder(self) -> Self::Builder {
PostgresqlBuilder { config: self }
}
}
diff --git a/core/src/services/redb/backend.rs b/core/src/services/redb/backend.rs
index dd049d6629..e4f3d33276 100644
--- a/core/src/services/redb/backend.rs
+++ b/core/src/services/redb/backend.rs
@@ -45,7 +45,8 @@ pub struct RedbConfig {
}
impl Configurator for RedbConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = RedbBuilder;
+ fn into_builder(self) -> Self::Builder {
RedbBuilder { config: self }
}
}
diff --git a/core/src/services/redis/backend.rs b/core/src/services/redis/backend.rs
index f8460f4c3e..fc45eaa5cb 100644
--- a/core/src/services/redis/backend.rs
+++ b/core/src/services/redis/backend.rs
@@ -99,7 +99,8 @@ impl Debug for RedisConfig {
}
impl Configurator for RedisConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = RedisBuilder;
+ fn into_builder(self) -> Self::Builder {
RedisBuilder { config: self }
}
}
diff --git a/core/src/services/rocksdb/backend.rs b/core/src/services/rocksdb/backend.rs
index 7ee2e84431..130b785bbd 100644
--- a/core/src/services/rocksdb/backend.rs
+++ b/core/src/services/rocksdb/backend.rs
@@ -43,7 +43,8 @@ pub struct RocksdbConfig {
}
impl Configurator for RocksdbConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = RocksdbBuilder;
+ fn into_builder(self) -> Self::Builder {
RocksdbBuilder { config: self }
}
}
diff --git a/core/src/services/s3/backend.rs b/core/src/services/s3/backend.rs
index dbb9832114..1bcd4a4bfd 100644
--- a/core/src/services/s3/backend.rs
+++ b/core/src/services/s3/backend.rs
@@ -226,7 +226,8 @@ impl Debug for S3Config {
}
impl Configurator for S3Config {
- fn into_builder(self) -> impl Builder {
+ type Builder = S3Builder;
+ fn into_builder(self) -> Self::Builder {
S3Builder {
config: self,
customized_credential_load: None,
diff --git a/core/src/services/seafile/backend.rs b/core/src/services/seafile/backend.rs
index ce214aa077..10b71a1fbe 100644
--- a/core/src/services/seafile/backend.rs
+++ b/core/src/services/seafile/backend.rs
@@ -72,7 +72,8 @@ impl Debug for SeafileConfig {
}
impl Configurator for SeafileConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = SeafileBuilder;
+ fn into_builder(self) -> Self::Builder {
SeafileBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/sftp/backend.rs b/core/src/services/sftp/backend.rs
index 0a6b95dc11..637164e689 100644
--- a/core/src/services/sftp/backend.rs
+++ b/core/src/services/sftp/backend.rs
@@ -73,7 +73,8 @@ impl Debug for SftpConfig {
}
impl Configurator for SftpConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = SftpBuilder;
+ fn into_builder(self) -> Self::Builder {
SftpBuilder { config: self }
}
}
diff --git a/core/src/services/sled/backend.rs b/core/src/services/sled/backend.rs
index 23b1e80f6a..e04488a15a 100644
--- a/core/src/services/sled/backend.rs
+++ b/core/src/services/sled/backend.rs
@@ -58,7 +58,8 @@ impl Debug for SledConfig {
}
impl Configurator for SledConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = SledBuilder;
+ fn into_builder(self) -> Self::Builder {
SledBuilder { config: self }
}
}
diff --git a/core/src/services/sqlite/backend.rs b/core/src/services/sqlite/backend.rs
index f4878e7165..1229ca2eaa 100644
--- a/core/src/services/sqlite/backend.rs
+++ b/core/src/services/sqlite/backend.rs
@@ -77,7 +77,8 @@ impl Debug for SqliteConfig {
}
impl Configurator for SqliteConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = SqliteBuilder;
+ fn into_builder(self) -> Self::Builder {
SqliteBuilder { config: self }
}
}
diff --git a/core/src/services/supabase/backend.rs b/core/src/services/supabase/backend.rs
index cd8e89cc5e..773ffb381a 100644
--- a/core/src/services/supabase/backend.rs
+++ b/core/src/services/supabase/backend.rs
@@ -56,7 +56,8 @@ impl Debug for SupabaseConfig {
}
impl Configurator for SupabaseConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = SupabaseBuilder;
+ fn into_builder(self) -> Self::Builder {
SupabaseBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/surrealdb/backend.rs b/core/src/services/surrealdb/backend.rs
index 64c4d5a1c3..b7482f6cdf 100644
--- a/core/src/services/surrealdb/backend.rs
+++ b/core/src/services/surrealdb/backend.rs
@@ -74,7 +74,8 @@ impl Debug for SurrealdbConfig {
}
impl Configurator for SurrealdbConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = SurrealdbBuilder;
+ fn into_builder(self) -> Self::Builder {
SurrealdbBuilder { config: self }
}
}
diff --git a/core/src/services/swift/backend.rs b/core/src/services/swift/backend.rs
index ef94c95d9d..e0170db0b9 100644
--- a/core/src/services/swift/backend.rs
+++ b/core/src/services/swift/backend.rs
@@ -64,7 +64,8 @@ impl Debug for SwiftConfig {
}
impl Configurator for SwiftConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = SwiftBuilder;
+ fn into_builder(self) -> Self::Builder {
SwiftBuilder { config: self }
}
}
diff --git a/core/src/services/tikv/backend.rs b/core/src/services/tikv/backend.rs
index 49b80bee26..cb113e956e 100644
--- a/core/src/services/tikv/backend.rs
+++ b/core/src/services/tikv/backend.rs
@@ -64,7 +64,8 @@ impl Debug for TikvConfig {
}
impl Configurator for TikvConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = TikvBuilder;
+ fn into_builder(self) -> Self::Builder {
TikvBuilder { config: self }
}
}
diff --git a/core/src/services/upyun/backend.rs b/core/src/services/upyun/backend.rs
index 67cb900003..1a9c4e0357 100644
--- a/core/src/services/upyun/backend.rs
+++ b/core/src/services/upyun/backend.rs
@@ -63,7 +63,8 @@ impl Debug for UpyunConfig {
}
impl Configurator for UpyunConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = UpyunBuilder;
+ fn into_builder(self) -> Self::Builder {
UpyunBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/vercel_artifacts/builder.rs b/core/src/services/vercel_artifacts/builder.rs
index ee41e29e88..8618e49ed2 100644
--- a/core/src/services/vercel_artifacts/builder.rs
+++ b/core/src/services/vercel_artifacts/builder.rs
@@ -45,7 +45,8 @@ impl Debug for VercelArtifactsConfig {
}
impl Configurator for VercelArtifactsConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = VercelArtifactsBuilder;
+ fn into_builder(self) -> Self::Builder {
VercelArtifactsBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/vercel_blob/backend.rs b/core/src/services/vercel_blob/backend.rs
index 256ef35898..fb308b516f 100644
--- a/core/src/services/vercel_blob/backend.rs
+++ b/core/src/services/vercel_blob/backend.rs
@@ -60,7 +60,8 @@ impl Debug for VercelBlobConfig {
}
impl Configurator for VercelBlobConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = VercelBlobBuilder;
+ fn into_builder(self) -> Self::Builder {
VercelBlobBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/webdav/backend.rs b/core/src/services/webdav/backend.rs
index 19212ca054..94c3037362 100644
--- a/core/src/services/webdav/backend.rs
+++ b/core/src/services/webdav/backend.rs
@@ -65,7 +65,8 @@ impl Debug for WebdavConfig {
}
impl Configurator for WebdavConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = WebdavBuilder;
+ fn into_builder(self) -> Self::Builder {
WebdavBuilder {
config: self,
http_client: None,
diff --git a/core/src/services/webhdfs/backend.rs b/core/src/services/webhdfs/backend.rs
index 7becff2366..2e32b03f7b 100644
--- a/core/src/services/webhdfs/backend.rs
+++ b/core/src/services/webhdfs/backend.rs
@@ -70,7 +70,8 @@ impl Debug for WebhdfsConfig {
}
impl Configurator for WebhdfsConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = WebhdfsBuilder;
+ fn into_builder(self) -> Self::Builder {
WebhdfsBuilder { config: self }
}
}
diff --git a/core/src/services/yandex_disk/backend.rs b/core/src/services/yandex_disk/backend.rs
index dfc767264f..cbcbc7bca8 100644
--- a/core/src/services/yandex_disk/backend.rs
+++ b/core/src/services/yandex_disk/backend.rs
@@ -60,7 +60,8 @@ impl Debug for YandexDiskConfig {
}
impl Configurator for YandexDiskConfig {
- fn into_builder(self) -> impl Builder {
+ type Builder = YandexDiskBuilder;
+ fn into_builder(self) -> Self::Builder {
YandexDiskBuilder {
config: self,
http_client: None,
diff --git a/core/src/types/builder.rs b/core/src/types/builder.rs
index c3ae8ff6ec..287122457c 100644
--- a/core/src/types/builder.rs
+++ b/core/src/types/builder.rs
@@ -94,7 +94,36 @@ impl Builder for () {
/// Ok(())
/// }
/// ```
+///
+/// Some service builder might contain in memory options like `http_client` . Users can call
+/// `into_builder` to convert the configuration into a builder instead.
+///
+/// ```
+/// # use anyhow::Result;
+/// use std::collections::HashMap;
+///
+/// use opendal::services::S3Config;
+/// use opendal::{Configurator, Operator};///
+/// use opendal::raw::HttpClient;
+///
+/// async fn test() -> Result<()> {
+/// let mut cfg = S3Config::default();
+/// cfg.root = Some("/".to_string());
+/// cfg.bucket = "test".to_string();
+///
+/// let builder = cfg.into_builder();
+/// let builder = builder.http_client(HttpClient::new()?);
+///
+/// // Build an `Operator` to start operating the storage.
+/// let op: Operator = Operator::new(builder)?.finish();
+///
+/// Ok(())
+/// }
+/// ```
pub trait Configurator: Serialize + DeserializeOwned + Debug + 'static {
+ /// Associated builder for this configuration.
+ type Builder: Builder;
+
/// Deserialize from an iterator.
///
/// This API is provided by opendal, developer should not implement it.
@@ -107,9 +136,11 @@ pub trait Configurator: Serialize + DeserializeOwned + Debug + 'static {
}
/// Convert this configuration into a service builder.
- fn into_builder(self) -> impl Builder;
+ fn into_builder(self) -> Self::Builder;
}
impl Configurator for () {
- fn into_builder(self) -> impl Builder {}
+ type Builder = ();
+
+ fn into_builder(self) -> Self::Builder {}
}