From fcba1ca922ef39e07863a6a020899ec5514cfa98 Mon Sep 17 00:00:00 2001 From: Xuanwo Date: Tue, 6 Aug 2024 16:03:41 +0800 Subject: [PATCH] refactor(core)!: Return associated builder instead (#4968) Signed-off-by: Xuanwo --- 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 cf6a479fd60e..896390265787 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 77ed6ac40bed..7dc5ba5c21cd 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 6d9aec73a1a0..bd998430b157 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 5812b41d38f4..eb61f612832f 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 3c907d397f2b..d97f5b84053f 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 b4489b557e0a..baa68ae14f55 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 4fe74c9fcb12..5390e0255695 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 2a7de8922fc3..18fb45d53d2e 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 5e1d6112ff4a..977127f9ca1b 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 2431d0e26102..88640c578d63 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 0ce628e5077d..7184ce0e9ef4 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 d2fa7f5d2056..f866ccec076e 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 d94201490e46..a900aba741e5 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 ae0fb132ed42..e6aaa6da4e56 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 8b4d8d728c37..ac359ee4c415 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 4673ceb4e0cc..542722a3e0dc 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 29ee07a852ee..bef4e2421e58 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 90eee72566b0..3344a951cf0e 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 34fbe5f5be75..2a83bffdeb31 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, ///config_path for the backend. pub config_path: Option, } -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 { let _network = Arc::new(unsafe { foundationdb::boot() }); diff --git a/core/src/services/foundationdb/mod.rs b/core/src/services/foundationdb/mod.rs index 10d196dff737..a761e25a47ed 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 0559fa7c578c..93bdd445ad0e 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 c277cfac7bc3..1d5cb84b0357 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 afeb38653d66..d00c740ea85f 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 07e1128e66f9..fc3b9b8385c5 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 7333f92184b0..4698de168f3e 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 b45fefe9838a..f33bd0554a2b 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 a0396f22795c..6c36776fa421 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 857bd6a710b9..ff240c248c28 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 de7d830a8ed4..d8c9edc3cf64 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 dfd6efd140f4..72566166217e 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 5b025197d708..712c895edf46 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 37b8146c7a10..583d61a0f0d7 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 b9ffda9791a7..3eeda15b9727 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 ab6f150ae359..9704888215ca 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 71728c15efc1..7809e35eae0e 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 8cf007902efd..70bdfb921923 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 ccdbaabb8d32..4f516bfc8269 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 ed14c74a15d0..ef7ca83760fc 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 9cb0a1773bc2..6373d157f9f7 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 bc7c9de65e3a..10e9aa7f2e70 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 7ad68a176097..13e8fc73029b 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 05e767902c18..d700b08d382c 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 e05026933010..579d932867ad 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 b5e6179c5b06..e3bd1f02dc0f 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 306ed1734e32..071a0cda0167 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 d2bf3f2534c6..4f0ae806d64d 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 a3563bc1ddcc..b9e3d44a7191 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 8afd38e5537c..a07fdd54728b 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 c285f636e349..7b5c0c1fdde1 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 2864cb03aed6..fa053562a756 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 dd049d6629af..e4f3d33276d4 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 f8460f4c3ec8..fc45eaa5cb72 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 7ee2e84431eb..130b785bbdf0 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 dbb983211477..1bcd4a4bfd08 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 ce214aa07797..10b71a1fbe76 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 0a6b95dc11d8..637164e68964 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 23b1e80f6a57..e04488a15a0e 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 f4878e71654e..1229ca2eaa81 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 cd8e89cc5ee2..773ffb381a5f 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 64c4d5a1c330..b7482f6cdfa5 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 ef94c95d9db4..e0170db0b943 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 49b80bee268e..cb113e956ee4 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 67cb90000329..1a9c4e03575b 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 ee41e29e8883..8618e49ed268 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 256ef35898a6..fb308b516f90 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 19212ca0544d..94c303736241 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 7becff23669d..2e32b03f7b9a 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 dfc767264f5d..cbcbc7bca898 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 c3ae8ff6eccd..287122457c2a 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 {} }