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 2025/10/14 12:24:43 UTC

(opendal) 01/03: Refactor features

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

xuanwo pushed a commit to branch cleanup-config
in repository https://gitbox.apache.org/repos/asf/opendal.git

commit d22e6565dbdcfebac9e36b35e949311372cd31a0
Author: Xuanwo <gi...@xuanwo.io>
AuthorDate: Tue Oct 14 18:01:46 2025 +0800

    Refactor features
    
    Signed-off-by: Xuanwo <gi...@xuanwo.io>
---
 core/src/services/aliyun_drive/mod.rs     |   8 --
 core/src/services/alluxio/mod.rs          |   8 --
 core/src/services/azblob/mod.rs           |   8 --
 core/src/services/azdls/mod.rs            |   8 --
 core/src/services/azfile/mod.rs           |   8 --
 core/src/services/b2/mod.rs               |   8 --
 core/src/services/cacache/mod.rs          |   6 --
 core/src/services/cloudflare_kv/mod.rs    |   9 ---
 core/src/services/compfs/mod.rs           |   8 --
 core/src/services/cos/mod.rs              |   8 --
 core/src/services/d1/mod.rs               |   4 -
 core/src/services/dashmap/mod.rs          |   7 --
 core/src/services/dbfs/mod.rs             |   8 --
 core/src/services/dropbox/mod.rs          |   9 ---
 core/src/services/etcd/mod.rs             |   8 --
 core/src/services/foundationdb/mod.rs     |   2 -
 core/src/services/fs/mod.rs               |   9 ---
 core/src/services/ftp/mod.rs              |   9 ---
 core/src/services/gcs/mod.rs              |   9 ---
 core/src/services/gdrive/mod.rs           |   9 ---
 core/src/services/ghac/mod.rs             |   6 --
 core/src/services/github/mod.rs           |   8 --
 core/src/services/gridfs/mod.rs           |   3 -
 core/src/services/hdfs/mod.rs             |   7 --
 core/src/services/hdfs_native/mod.rs      |   8 --
 core/src/services/http/mod.rs             |   5 --
 core/src/services/huggingface/mod.rs      |   6 --
 core/src/services/ipfs/mod.rs             |   6 --
 core/src/services/ipmfs/mod.rs            |   9 ---
 core/src/services/koofr/mod.rs            |   8 --
 core/src/services/lakefs/mod.rs           |   8 --
 core/src/services/memcached/mod.rs        |   3 -
 core/src/services/memory/mod.rs           |   7 --
 core/src/services/mini_moka/mod.rs        |   7 --
 core/src/services/mod.rs                  | 124 +++++++++++++++++++++++++++++-
 core/src/services/moka/mod.rs             |   9 ---
 core/src/services/mongodb/mod.rs          |   2 -
 core/src/services/monoiofs/mod.rs         |   7 --
 core/src/services/mysql/mod.rs            |   2 -
 core/src/services/obs/mod.rs              |   8 --
 core/src/services/onedrive/mod.rs         |  10 ---
 core/src/services/opfs/mod.rs             |   5 --
 core/src/services/oss/mod.rs              |   8 --
 core/src/services/pcloud/mod.rs           |   8 --
 core/src/services/persy/mod.rs            |   2 -
 core/src/services/postgresql/mod.rs       |   2 -
 core/src/services/redb/mod.rs             |   2 -
 core/src/services/redis/mod.rs            |   6 --
 core/src/services/rocksdb/mod.rs          |   2 -
 core/src/services/s3/mod.rs               |   8 --
 core/src/services/seafile/mod.rs          |   8 --
 core/src/services/sftp/mod.rs             |  10 ---
 core/src/services/sled/mod.rs             |   2 -
 core/src/services/sqlite/mod.rs           |   2 -
 core/src/services/surrealdb/mod.rs        |   2 -
 core/src/services/swift/mod.rs            |   8 --
 core/src/services/tikv/mod.rs             |   2 -
 core/src/services/upyun/mod.rs            |   8 --
 core/src/services/vercel_artifacts/mod.rs |   7 --
 core/src/services/vercel_blob/mod.rs      |   8 --
 core/src/services/webdav/mod.rs           |   8 --
 core/src/services/webhdfs/mod.rs          |   9 ---
 core/src/services/yandex_disk/mod.rs      |   8 --
 core/src/types/operator/registry.rs       |  23 +++---
 64 files changed, 135 insertions(+), 419 deletions(-)

diff --git a/core/src/services/aliyun_drive/mod.rs b/core/src/services/aliyun_drive/mod.rs
index ef1862bbc..2ab6e5624 100644
--- a/core/src/services/aliyun_drive/mod.rs
+++ b/core/src/services/aliyun_drive/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for aliyun_drive service.
-#[cfg(feature = "services-aliyun-drive")]
 pub(super) const DEFAULT_SCHEME: &str = "aliyun_drive";
-#[cfg(feature = "services-aliyun-drive")]
 mod core;
 
-#[cfg(feature = "services-aliyun-drive")]
 mod backend;
-#[cfg(feature = "services-aliyun-drive")]
 mod delete;
-#[cfg(feature = "services-aliyun-drive")]
 mod error;
-#[cfg(feature = "services-aliyun-drive")]
 mod lister;
-#[cfg(feature = "services-aliyun-drive")]
 mod writer;
-#[cfg(feature = "services-aliyun-drive")]
 pub use backend::AliyunDriveBuilder as AliyunDrive;
 
 mod config;
diff --git a/core/src/services/alluxio/mod.rs b/core/src/services/alluxio/mod.rs
index 71cd2b0e9..8ac90bd24 100644
--- a/core/src/services/alluxio/mod.rs
+++ b/core/src/services/alluxio/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for alluxio service.
-#[cfg(feature = "services-alluxio")]
 pub(super) const DEFAULT_SCHEME: &str = "alluxio";
-#[cfg(feature = "services-alluxio")]
 mod core;
-#[cfg(feature = "services-alluxio")]
 mod delete;
-#[cfg(feature = "services-alluxio")]
 mod error;
-#[cfg(feature = "services-alluxio")]
 mod lister;
-#[cfg(feature = "services-alluxio")]
 mod writer;
 
-#[cfg(feature = "services-alluxio")]
 mod backend;
-#[cfg(feature = "services-alluxio")]
 pub use backend::AlluxioBuilder as Alluxio;
 
 mod config;
diff --git a/core/src/services/azblob/mod.rs b/core/src/services/azblob/mod.rs
index f014a29ef..ce6fa88a3 100644
--- a/core/src/services/azblob/mod.rs
+++ b/core/src/services/azblob/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for azblob service.
-#[cfg(feature = "services-azblob")]
 pub const AZBLOB_SCHEME: &str = "azblob";
-#[cfg(feature = "services-azblob")]
 pub(crate) mod core;
-#[cfg(feature = "services-azblob")]
 mod delete;
-#[cfg(feature = "services-azblob")]
 mod error;
-#[cfg(feature = "services-azblob")]
 mod lister;
-#[cfg(feature = "services-azblob")]
 pub(crate) mod writer;
 
-#[cfg(feature = "services-azblob")]
 mod backend;
-#[cfg(feature = "services-azblob")]
 pub use backend::AzblobBuilder as Azblob;
 
 mod config;
diff --git a/core/src/services/azdls/mod.rs b/core/src/services/azdls/mod.rs
index 643d11aad..a046c3e9c 100644
--- a/core/src/services/azdls/mod.rs
+++ b/core/src/services/azdls/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for azdls service.
-#[cfg(feature = "services-azdls")]
 pub(super) const DEFAULT_SCHEME: &str = "azdls";
-#[cfg(feature = "services-azdls")]
 mod backend;
-#[cfg(feature = "services-azdls")]
 mod core;
-#[cfg(feature = "services-azdls")]
 mod delete;
-#[cfg(feature = "services-azdls")]
 mod error;
-#[cfg(feature = "services-azdls")]
 mod lister;
-#[cfg(feature = "services-azdls")]
 mod writer;
 
-#[cfg(feature = "services-azdls")]
 pub use backend::AzdlsBuilder as Azdls;
 
 mod config;
diff --git a/core/src/services/azfile/mod.rs b/core/src/services/azfile/mod.rs
index 99ca22abf..55bb87234 100644
--- a/core/src/services/azfile/mod.rs
+++ b/core/src/services/azfile/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for azfile service.
-#[cfg(feature = "services-azfile")]
 pub(super) const DEFAULT_SCHEME: &str = "azfile";
-#[cfg(feature = "services-azfile")]
 mod core;
-#[cfg(feature = "services-azfile")]
 mod delete;
-#[cfg(feature = "services-azfile")]
 mod error;
-#[cfg(feature = "services-azfile")]
 mod lister;
-#[cfg(feature = "services-azfile")]
 mod writer;
 
-#[cfg(feature = "services-azfile")]
 mod backend;
-#[cfg(feature = "services-azfile")]
 pub use backend::AzfileBuilder as Azfile;
 
 mod config;
diff --git a/core/src/services/b2/mod.rs b/core/src/services/b2/mod.rs
index 6a4778994..63e421d9d 100644
--- a/core/src/services/b2/mod.rs
+++ b/core/src/services/b2/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for b2 service.
-#[cfg(feature = "services-b2")]
 pub const B2_SCHEME: &str = "b2";
-#[cfg(feature = "services-b2")]
 mod core;
-#[cfg(feature = "services-b2")]
 mod delete;
-#[cfg(feature = "services-b2")]
 mod error;
-#[cfg(feature = "services-b2")]
 mod lister;
-#[cfg(feature = "services-b2")]
 mod writer;
 
-#[cfg(feature = "services-b2")]
 mod backend;
-#[cfg(feature = "services-b2")]
 pub use backend::B2Builder as B2;
 
 mod config;
diff --git a/core/src/services/cacache/mod.rs b/core/src/services/cacache/mod.rs
index 54f973e8d..96f94b71a 100644
--- a/core/src/services/cacache/mod.rs
+++ b/core/src/services/cacache/mod.rs
@@ -16,18 +16,12 @@
 // under the License.
 
 /// Default scheme for cacache service.
-#[cfg(feature = "services-cacache")]
 pub(super) const DEFAULT_SCHEME: &str = "cacache";
-#[cfg(feature = "services-cacache")]
 mod backend;
-#[cfg(feature = "services-cacache")]
 mod core;
-#[cfg(feature = "services-cacache")]
 mod delete;
-#[cfg(feature = "services-cacache")]
 mod writer;
 
-#[cfg(feature = "services-cacache")]
 pub use backend::CacacheBuilder as Cacache;
 
 mod config;
diff --git a/core/src/services/cloudflare_kv/mod.rs b/core/src/services/cloudflare_kv/mod.rs
index 0de5f36a1..0e1b2a9f5 100644
--- a/core/src/services/cloudflare_kv/mod.rs
+++ b/core/src/services/cloudflare_kv/mod.rs
@@ -15,24 +15,15 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-cloudflare-kv")]
 pub(super) const DEFAULT_SCHEME: &str = "cloudflare_kv";
-#[cfg(feature = "services-cloudflare-kv")]
 mod error;
 
-#[cfg(feature = "services-cloudflare-kv")]
 mod backend;
-#[cfg(feature = "services-cloudflare-kv")]
 mod core;
-#[cfg(feature = "services-cloudflare-kv")]
 mod delete;
-#[cfg(feature = "services-cloudflare-kv")]
 mod lister;
-#[cfg(feature = "services-cloudflare-kv")]
 mod model;
-#[cfg(feature = "services-cloudflare-kv")]
 mod writer;
-#[cfg(feature = "services-cloudflare-kv")]
 pub use backend::CloudflareKvBuilder as CloudflareKv;
 
 mod config;
diff --git a/core/src/services/compfs/mod.rs b/core/src/services/compfs/mod.rs
index 252d67f08..7e9052f95 100644
--- a/core/src/services/compfs/mod.rs
+++ b/core/src/services/compfs/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for compfs service.
-#[cfg(feature = "services-compfs")]
 pub(super) const DEFAULT_SCHEME: &str = "compfs";
-#[cfg(feature = "services-compfs")]
 mod core;
-#[cfg(feature = "services-compfs")]
 mod delete;
-#[cfg(feature = "services-compfs")]
 mod lister;
-#[cfg(feature = "services-compfs")]
 mod reader;
-#[cfg(feature = "services-compfs")]
 mod writer;
 
-#[cfg(feature = "services-compfs")]
 mod backend;
-#[cfg(feature = "services-compfs")]
 pub use backend::CompfsBuilder as Compfs;
 
 mod config;
diff --git a/core/src/services/cos/mod.rs b/core/src/services/cos/mod.rs
index 0de2ff00d..2837cc775 100644
--- a/core/src/services/cos/mod.rs
+++ b/core/src/services/cos/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for cos service.
-#[cfg(feature = "services-cos")]
 pub const COS_SCHEME: &str = "cos";
-#[cfg(feature = "services-cos")]
 mod core;
-#[cfg(feature = "services-cos")]
 mod delete;
-#[cfg(feature = "services-cos")]
 mod error;
-#[cfg(feature = "services-cos")]
 mod lister;
-#[cfg(feature = "services-cos")]
 mod writer;
 
-#[cfg(feature = "services-cos")]
 mod backend;
-#[cfg(feature = "services-cos")]
 pub use backend::CosBuilder as Cos;
 
 mod config;
diff --git a/core/src/services/d1/mod.rs b/core/src/services/d1/mod.rs
index 6f13716f5..9c3c6ea4d 100644
--- a/core/src/services/d1/mod.rs
+++ b/core/src/services/d1/mod.rs
@@ -15,14 +15,10 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-d1")]
 mod error;
-#[cfg(feature = "services-d1")]
 mod model;
 
-#[cfg(feature = "services-d1")]
 mod backend;
-#[cfg(feature = "services-d1")]
 pub use backend::D1Builder as D1;
 
 mod config;
diff --git a/core/src/services/dashmap/mod.rs b/core/src/services/dashmap/mod.rs
index 71356a6ca..4fe62b61a 100644
--- a/core/src/services/dashmap/mod.rs
+++ b/core/src/services/dashmap/mod.rs
@@ -16,20 +16,13 @@
 // under the License.
 
 /// Default scheme for dashmap service.
-#[cfg(feature = "services-dashmap")]
 pub(super) const DEFAULT_SCHEME: &str = "dashmap";
-#[cfg(feature = "services-dashmap")]
 mod backend;
-#[cfg(feature = "services-dashmap")]
 mod core;
-#[cfg(feature = "services-dashmap")]
 mod delete;
-#[cfg(feature = "services-dashmap")]
 mod lister;
-#[cfg(feature = "services-dashmap")]
 mod writer;
 
-#[cfg(feature = "services-dashmap")]
 pub use backend::DashmapBuilder as Dashmap;
 
 mod config;
diff --git a/core/src/services/dbfs/mod.rs b/core/src/services/dbfs/mod.rs
index c76040a55..221b9f096 100644
--- a/core/src/services/dbfs/mod.rs
+++ b/core/src/services/dbfs/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for dbfs service.
-#[cfg(feature = "services-dbfs")]
 pub(super) const DEFAULT_SCHEME: &str = "dbfs";
-#[cfg(feature = "services-dbfs")]
 mod core;
-#[cfg(feature = "services-dbfs")]
 mod delete;
-#[cfg(feature = "services-dbfs")]
 mod error;
-#[cfg(feature = "services-dbfs")]
 mod lister;
-#[cfg(feature = "services-dbfs")]
 mod writer;
 
-#[cfg(feature = "services-dbfs")]
 mod backend;
-#[cfg(feature = "services-dbfs")]
 pub use backend::DbfsBuilder as Dbfs;
 
 mod config;
diff --git a/core/src/services/dropbox/mod.rs b/core/src/services/dropbox/mod.rs
index a3c6f77d8..c504f0d58 100644
--- a/core/src/services/dropbox/mod.rs
+++ b/core/src/services/dropbox/mod.rs
@@ -16,24 +16,15 @@
 // under the License.
 
 /// Default scheme for dropbox service.
-#[cfg(feature = "services-dropbox")]
 pub(super) const DEFAULT_SCHEME: &str = "dropbox";
-#[cfg(feature = "services-dropbox")]
 mod backend;
-#[cfg(feature = "services-dropbox")]
 mod core;
-#[cfg(feature = "services-dropbox")]
 mod delete;
-#[cfg(feature = "services-dropbox")]
 mod error;
-#[cfg(feature = "services-dropbox")]
 mod lister;
-#[cfg(feature = "services-dropbox")]
 mod writer;
 
-#[cfg(feature = "services-dropbox")]
 mod builder;
-#[cfg(feature = "services-dropbox")]
 pub use builder::DropboxBuilder as Dropbox;
 
 mod config;
diff --git a/core/src/services/etcd/mod.rs b/core/src/services/etcd/mod.rs
index 49189f4d9..829b70ea4 100644
--- a/core/src/services/etcd/mod.rs
+++ b/core/src/services/etcd/mod.rs
@@ -15,21 +15,13 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-etcd")]
 pub(super) const DEFAULT_SCHEME: &str = "etcd";
-#[cfg(feature = "services-etcd")]
 mod backend;
-#[cfg(feature = "services-etcd")]
 mod core;
-#[cfg(feature = "services-etcd")]
 mod deleter;
-#[cfg(feature = "services-etcd")]
 mod error;
-#[cfg(feature = "services-etcd")]
 mod lister;
-#[cfg(feature = "services-etcd")]
 mod writer;
-#[cfg(feature = "services-etcd")]
 pub use backend::EtcdBuilder as Etcd;
 
 mod config;
diff --git a/core/src/services/foundationdb/mod.rs b/core/src/services/foundationdb/mod.rs
index dd8650ff7..2eede8d02 100644
--- a/core/src/services/foundationdb/mod.rs
+++ b/core/src/services/foundationdb/mod.rs
@@ -15,9 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-foundationdb")]
 mod backend;
-#[cfg(feature = "services-foundationdb")]
 pub use backend::FoundationdbBuilder as Foundationdb;
 
 mod config;
diff --git a/core/src/services/fs/mod.rs b/core/src/services/fs/mod.rs
index 7fa64234a..107155822 100644
--- a/core/src/services/fs/mod.rs
+++ b/core/src/services/fs/mod.rs
@@ -16,24 +16,15 @@
 // under the License.
 
 /// Default scheme for fs service.
-#[cfg(feature = "services-fs")]
 pub const FS_SCHEME: &str = "fs";
-#[cfg(feature = "services-fs")]
 mod core;
-#[cfg(feature = "services-fs")]
 mod delete;
-#[cfg(feature = "services-fs")]
 mod error;
-#[cfg(feature = "services-fs")]
 mod lister;
-#[cfg(feature = "services-fs")]
 mod reader;
-#[cfg(feature = "services-fs")]
 mod writer;
 
-#[cfg(feature = "services-fs")]
 mod backend;
-#[cfg(feature = "services-fs")]
 pub use backend::FsBuilder as Fs;
 
 mod config;
diff --git a/core/src/services/ftp/mod.rs b/core/src/services/ftp/mod.rs
index b264a54a0..21ac3fb2e 100644
--- a/core/src/services/ftp/mod.rs
+++ b/core/src/services/ftp/mod.rs
@@ -16,24 +16,15 @@
 // under the License.
 
 /// Default scheme for ftp service.
-#[cfg(feature = "services-ftp")]
 pub(super) const DEFAULT_SCHEME: &str = "ftp";
-#[cfg(feature = "services-ftp")]
 mod delete;
-#[cfg(feature = "services-ftp")]
 mod err;
-#[cfg(feature = "services-ftp")]
 mod lister;
-#[cfg(feature = "services-ftp")]
 mod reader;
-#[cfg(feature = "services-ftp")]
 mod writer;
 
-#[cfg(feature = "services-ftp")]
 mod backend;
-#[cfg(feature = "services-ftp")]
 pub use backend::FtpBuilder as Ftp;
-#[cfg(feature = "services-ftp")]
 mod core;
 
 mod config;
diff --git a/core/src/services/gcs/mod.rs b/core/src/services/gcs/mod.rs
index 0c8427158..3bf996c71 100644
--- a/core/src/services/gcs/mod.rs
+++ b/core/src/services/gcs/mod.rs
@@ -16,24 +16,15 @@
 // under the License.
 
 /// Default scheme for gcs service.
-#[cfg(feature = "services-gcs")]
 pub const GCS_SCHEME: &str = "gcs";
-#[cfg(feature = "services-gcs")]
 mod core;
-#[cfg(feature = "services-gcs")]
 mod delete;
-#[cfg(feature = "services-gcs")]
 mod error;
-#[cfg(feature = "services-gcs")]
 mod lister;
-#[cfg(feature = "services-gcs")]
 mod uri;
-#[cfg(feature = "services-gcs")]
 mod writer;
 
-#[cfg(feature = "services-gcs")]
 mod backend;
-#[cfg(feature = "services-gcs")]
 pub use backend::GcsBuilder as Gcs;
 
 mod config;
diff --git a/core/src/services/gdrive/mod.rs b/core/src/services/gdrive/mod.rs
index aa7e170f8..20e8a4b6a 100644
--- a/core/src/services/gdrive/mod.rs
+++ b/core/src/services/gdrive/mod.rs
@@ -16,24 +16,15 @@
 // under the License.
 
 /// Default scheme for gdrive service.
-#[cfg(feature = "services-gdrive")]
 pub(super) const DEFAULT_SCHEME: &str = "gdrive";
-#[cfg(feature = "services-gdrive")]
 mod backend;
-#[cfg(feature = "services-gdrive")]
 mod core;
-#[cfg(feature = "services-gdrive")]
 mod delete;
-#[cfg(feature = "services-gdrive")]
 mod error;
-#[cfg(feature = "services-gdrive")]
 mod lister;
-#[cfg(feature = "services-gdrive")]
 mod writer;
 
-#[cfg(feature = "services-gdrive")]
 mod builder;
-#[cfg(feature = "services-gdrive")]
 pub use builder::GdriveBuilder as Gdrive;
 
 mod config;
diff --git a/core/src/services/ghac/mod.rs b/core/src/services/ghac/mod.rs
index 0b4d86229..4d7253fdc 100644
--- a/core/src/services/ghac/mod.rs
+++ b/core/src/services/ghac/mod.rs
@@ -16,19 +16,13 @@
 // under the License.
 
 /// Default scheme for ghac service.
-#[cfg(feature = "services-ghac")]
 pub(super) const DEFAULT_SCHEME: &str = "ghac";
-#[cfg(feature = "services-ghac")]
 mod error;
-#[cfg(feature = "services-ghac")]
 mod writer;
 
-#[cfg(feature = "services-ghac")]
 mod backend;
-#[cfg(feature = "services-ghac")]
 pub use backend::GhacBuilder as Ghac;
 
-#[cfg(feature = "services-ghac")]
 mod core;
 
 mod config;
diff --git a/core/src/services/github/mod.rs b/core/src/services/github/mod.rs
index 7d7fda699..bba40e498 100644
--- a/core/src/services/github/mod.rs
+++ b/core/src/services/github/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for github service.
-#[cfg(feature = "services-github")]
 pub(super) const DEFAULT_SCHEME: &str = "github";
-#[cfg(feature = "services-github")]
 mod core;
-#[cfg(feature = "services-github")]
 mod delete;
-#[cfg(feature = "services-github")]
 mod error;
-#[cfg(feature = "services-github")]
 mod lister;
-#[cfg(feature = "services-github")]
 mod writer;
 
-#[cfg(feature = "services-github")]
 mod backend;
-#[cfg(feature = "services-github")]
 pub use backend::GithubBuilder as Github;
 
 mod config;
diff --git a/core/src/services/gridfs/mod.rs b/core/src/services/gridfs/mod.rs
index e2a95b810..f1c7c7453 100644
--- a/core/src/services/gridfs/mod.rs
+++ b/core/src/services/gridfs/mod.rs
@@ -15,11 +15,8 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-gridfs")]
 mod backend;
-#[cfg(feature = "services-gridfs")]
 pub use backend::GridfsBuilder as Gridfs;
-#[cfg(feature = "services-gridfs")]
 mod core;
 
 mod config;
diff --git a/core/src/services/hdfs/mod.rs b/core/src/services/hdfs/mod.rs
index 3ffbcb033..88b8e1c67 100644
--- a/core/src/services/hdfs/mod.rs
+++ b/core/src/services/hdfs/mod.rs
@@ -16,20 +16,13 @@
 // under the License.
 
 /// Default scheme for hdfs service.
-#[cfg(feature = "services-hdfs")]
 pub(super) const DEFAULT_SCHEME: &str = "hdfs";
-#[cfg(feature = "services-hdfs")]
 mod delete;
-#[cfg(feature = "services-hdfs")]
 mod lister;
-#[cfg(feature = "services-hdfs")]
 mod reader;
-#[cfg(feature = "services-hdfs")]
 mod writer;
 
-#[cfg(feature = "services-hdfs")]
 mod backend;
-#[cfg(feature = "services-hdfs")]
 pub use backend::HdfsBuilder as Hdfs;
 
 mod config;
diff --git a/core/src/services/hdfs_native/mod.rs b/core/src/services/hdfs_native/mod.rs
index 4c9c1ff02..f606ab6fe 100644
--- a/core/src/services/hdfs_native/mod.rs
+++ b/core/src/services/hdfs_native/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for hdfs_native service.
-#[cfg(feature = "services-hdfs-native")]
 pub(super) const DEFAULT_SCHEME: &str = "hdfs_native";
-#[cfg(feature = "services-hdfs-native")]
 mod delete;
-#[cfg(feature = "services-hdfs-native")]
 mod error;
-#[cfg(feature = "services-hdfs-native")]
 mod lister;
-#[cfg(feature = "services-hdfs-native")]
 mod reader;
-#[cfg(feature = "services-hdfs-native")]
 mod writer;
 
-#[cfg(feature = "services-hdfs-native")]
 mod backend;
-#[cfg(feature = "services-hdfs-native")]
 pub use backend::HdfsNativeBuilder as HdfsNative;
 
 mod config;
diff --git a/core/src/services/http/mod.rs b/core/src/services/http/mod.rs
index 923d25588..7b95d3fff 100644
--- a/core/src/services/http/mod.rs
+++ b/core/src/services/http/mod.rs
@@ -16,16 +16,11 @@
 // under the License.
 
 /// Default scheme for http service.
-#[cfg(feature = "services-http")]
 pub(super) const DEFAULT_SCHEME: &str = "http";
-#[cfg(feature = "services-http")]
 mod error;
 
-#[cfg(feature = "services-http")]
 mod backend;
-#[cfg(feature = "services-http")]
 mod core;
-#[cfg(feature = "services-http")]
 pub use backend::HttpBuilder as Http;
 
 mod config;
diff --git a/core/src/services/huggingface/mod.rs b/core/src/services/huggingface/mod.rs
index bcf7ff9d7..58a2d40df 100644
--- a/core/src/services/huggingface/mod.rs
+++ b/core/src/services/huggingface/mod.rs
@@ -16,18 +16,12 @@
 // under the License.
 
 /// Default scheme for huggingface service.
-#[cfg(feature = "services-huggingface")]
 pub(super) const DEFAULT_SCHEME: &str = "huggingface";
-#[cfg(feature = "services-huggingface")]
 mod core;
-#[cfg(feature = "services-huggingface")]
 mod error;
-#[cfg(feature = "services-huggingface")]
 mod lister;
 
-#[cfg(feature = "services-huggingface")]
 mod backend;
-#[cfg(feature = "services-huggingface")]
 pub use backend::HuggingfaceBuilder as Huggingface;
 
 mod config;
diff --git a/core/src/services/ipfs/mod.rs b/core/src/services/ipfs/mod.rs
index 93617c2ba..0812677a8 100644
--- a/core/src/services/ipfs/mod.rs
+++ b/core/src/services/ipfs/mod.rs
@@ -16,18 +16,12 @@
 // under the License.
 
 /// Default scheme for ipfs service.
-#[cfg(feature = "services-ipfs")]
 pub(super) const DEFAULT_SCHEME: &str = "ipfs";
-#[cfg(feature = "services-ipfs")]
 mod error;
-#[cfg(feature = "services-ipfs")]
 mod ipld;
 
-#[cfg(feature = "services-ipfs")]
 mod backend;
-#[cfg(feature = "services-ipfs")]
 pub use backend::IpfsBuilder as Ipfs;
-#[cfg(feature = "services-ipfs")]
 mod core;
 
 mod config;
diff --git a/core/src/services/ipmfs/mod.rs b/core/src/services/ipmfs/mod.rs
index 4fe389028..97fd37694 100644
--- a/core/src/services/ipmfs/mod.rs
+++ b/core/src/services/ipmfs/mod.rs
@@ -16,24 +16,15 @@
 // under the License.
 
 /// Default scheme for ipmfs service.
-#[cfg(feature = "services-ipmfs")]
 pub(super) const DEFAULT_SCHEME: &str = "ipmfs";
-#[cfg(feature = "services-ipmfs")]
 mod backend;
-#[cfg(feature = "services-ipmfs")]
 mod core;
-#[cfg(feature = "services-ipmfs")]
 mod delete;
-#[cfg(feature = "services-ipmfs")]
 mod error;
-#[cfg(feature = "services-ipmfs")]
 mod lister;
-#[cfg(feature = "services-ipmfs")]
 mod writer;
 
-#[cfg(feature = "services-ipmfs")]
 mod builder;
-#[cfg(feature = "services-ipmfs")]
 pub use builder::IpmfsBuilder as Ipmfs;
 
 mod config;
diff --git a/core/src/services/koofr/mod.rs b/core/src/services/koofr/mod.rs
index 2339b6e0b..e12b4ca1a 100644
--- a/core/src/services/koofr/mod.rs
+++ b/core/src/services/koofr/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for koofr service.
-#[cfg(feature = "services-koofr")]
 pub(super) const DEFAULT_SCHEME: &str = "koofr";
-#[cfg(feature = "services-koofr")]
 mod core;
-#[cfg(feature = "services-koofr")]
 mod delete;
-#[cfg(feature = "services-koofr")]
 mod error;
-#[cfg(feature = "services-koofr")]
 mod lister;
-#[cfg(feature = "services-koofr")]
 mod writer;
 
-#[cfg(feature = "services-koofr")]
 mod backend;
-#[cfg(feature = "services-koofr")]
 pub use backend::KoofrBuilder as Koofr;
 
 mod config;
diff --git a/core/src/services/lakefs/mod.rs b/core/src/services/lakefs/mod.rs
index 0183e3d84..57a699cea 100644
--- a/core/src/services/lakefs/mod.rs
+++ b/core/src/services/lakefs/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for lakefs service.
-#[cfg(feature = "services-lakefs")]
 pub(super) const DEFAULT_SCHEME: &str = "lakefs";
-#[cfg(feature = "services-lakefs")]
 mod core;
-#[cfg(feature = "services-lakefs")]
 mod delete;
-#[cfg(feature = "services-lakefs")]
 mod error;
-#[cfg(feature = "services-lakefs")]
 mod lister;
-#[cfg(feature = "services-lakefs")]
 mod writer;
 
-#[cfg(feature = "services-lakefs")]
 mod backend;
-#[cfg(feature = "services-lakefs")]
 pub use backend::LakefsBuilder as Lakefs;
 
 mod config;
diff --git a/core/src/services/memcached/mod.rs b/core/src/services/memcached/mod.rs
index 3065eea73..4cb6779c7 100644
--- a/core/src/services/memcached/mod.rs
+++ b/core/src/services/memcached/mod.rs
@@ -15,12 +15,9 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-memcached")]
 mod binary;
 
-#[cfg(feature = "services-memcached")]
 mod backend;
-#[cfg(feature = "services-memcached")]
 pub use backend::MemcachedBuilder as Memcached;
 
 mod config;
diff --git a/core/src/services/memory/mod.rs b/core/src/services/memory/mod.rs
index a308c8e42..ba786dc27 100644
--- a/core/src/services/memory/mod.rs
+++ b/core/src/services/memory/mod.rs
@@ -16,21 +16,14 @@
 // under the License.
 
 /// Default scheme for memory service.
-#[cfg(feature = "services-memory")]
 pub const MEMORY_SCHEME: &str = "memory";
-#[cfg(feature = "services-memory")]
 mod backend;
-#[cfg(feature = "services-memory")]
 pub use backend::MemoryBuilder as Memory;
 
 mod config;
 pub use config::MemoryConfig;
 
-#[cfg(feature = "services-memory")]
 mod core;
-#[cfg(feature = "services-memory")]
 mod delete;
-#[cfg(feature = "services-memory")]
 mod lister;
-#[cfg(feature = "services-memory")]
 mod writer;
diff --git a/core/src/services/mini_moka/mod.rs b/core/src/services/mini_moka/mod.rs
index cff46e241..437766d7c 100644
--- a/core/src/services/mini_moka/mod.rs
+++ b/core/src/services/mini_moka/mod.rs
@@ -16,20 +16,13 @@
 // under the License.
 
 /// Default scheme for mini_moka service.
-#[cfg(feature = "services-mini-moka")]
 pub(super) const DEFAULT_SCHEME: &str = "mini_moka";
-#[cfg(feature = "services-mini-moka")]
 mod backend;
-#[cfg(feature = "services-mini-moka")]
 mod core;
-#[cfg(feature = "services-mini-moka")]
 mod delete;
-#[cfg(feature = "services-mini-moka")]
 mod lister;
-#[cfg(feature = "services-mini-moka")]
 mod writer;
 
-#[cfg(feature = "services-mini-moka")]
 pub use backend::MiniMokaBuilder as MiniMoka;
 
 mod config;
diff --git a/core/src/services/mod.rs b/core/src/services/mod.rs
index a78fd9a17..57cd81b4d 100644
--- a/core/src/services/mod.rs
+++ b/core/src/services/mod.rs
@@ -19,188 +19,310 @@
 //!
 //! More ongoing services support is tracked at [opendal#5](https://github.com/apache/opendal/issues/5). Please feel free to submit issues if there are services not covered.
 
+#[cfg(feature = "services-aliyun-drive")]
 mod aliyun_drive;
+#[cfg(feature = "services-aliyun-drive")]
 pub use aliyun_drive::*;
 
+#[cfg(feature = "services-alluxio")]
 mod alluxio;
+#[cfg(feature = "services-alluxio")]
 pub use alluxio::*;
 
+#[cfg(feature = "services-azblob")]
 mod azblob;
+#[cfg(feature = "services-azblob")]
 pub use azblob::*;
 
+#[cfg(feature = "services-azdls")]
 mod azdls;
+#[cfg(feature = "services-azdls")]
 pub use azdls::*;
 
+#[cfg(feature = "services-azfile")]
 mod azfile;
+#[cfg(feature = "services-azfile")]
 pub use azfile::*;
 
+#[cfg(feature = "services-b2")]
 mod b2;
+#[cfg(feature = "services-b2")]
 pub use b2::*;
 
+#[cfg(feature = "services-cacache")]
 mod cacache;
+#[cfg(feature = "services-cacache")]
 pub use self::cacache::*;
 
+#[cfg(feature = "services-cloudflare-kv")]
 mod cloudflare_kv;
+#[cfg(feature = "services-cloudflare-kv")]
 pub use self::cloudflare_kv::*;
 
+#[cfg(feature = "services-compfs")]
 mod compfs;
+#[cfg(feature = "services-compfs")]
 pub use compfs::*;
 
+#[cfg(feature = "services-cos")]
 mod cos;
+#[cfg(feature = "services-cos")]
 pub use cos::*;
 
+#[cfg(feature = "services-d1")]
 mod d1;
+#[cfg(feature = "services-d1")]
 pub use self::d1::*;
 
+#[cfg(feature = "services-dashmap")]
 mod dashmap;
+#[cfg(feature = "services-dashmap")]
 pub use self::dashmap::*;
 
+#[cfg(feature = "services-dbfs")]
 mod dbfs;
+#[cfg(feature = "services-dbfs")]
 pub use self::dbfs::*;
 
+#[cfg(feature = "services-dropbox")]
 mod dropbox;
+#[cfg(feature = "services-dropbox")]
 pub use dropbox::*;
 
+#[cfg(feature = "services-etcd")]
 mod etcd;
+#[cfg(feature = "services-etcd")]
 pub use self::etcd::*;
 
+#[cfg(feature = "services-foundationdb")]
 mod foundationdb;
+#[cfg(feature = "services-foundationdb")]
 pub use self::foundationdb::*;
 
+#[cfg(feature = "services-fs")]
 mod fs;
+#[cfg(feature = "services-fs")]
 pub use fs::*;
 
+#[cfg(feature = "services-ftp")]
 mod ftp;
+#[cfg(feature = "services-ftp")]
 pub use ftp::*;
 
+#[cfg(feature = "services-gcs")]
 mod gcs;
+#[cfg(feature = "services-gcs")]
 pub use gcs::*;
 
+#[cfg(feature = "services-gdrive")]
 mod gdrive;
+#[cfg(feature = "services-gdrive")]
 pub use gdrive::*;
 
+#[cfg(feature = "services-ghac")]
 mod ghac;
+#[cfg(feature = "services-ghac")]
 pub use ghac::*;
 
+#[cfg(feature = "services-github")]
 mod github;
+#[cfg(feature = "services-github")]
 pub use github::*;
 
+#[cfg(feature = "services-gridfs")]
 mod gridfs;
+#[cfg(feature = "services-gridfs")]
 pub use gridfs::*;
 
+#[cfg(feature = "services-hdfs")]
 mod hdfs;
+#[cfg(feature = "services-hdfs")]
 pub use self::hdfs::*;
 
+#[cfg(feature = "services-hdfs-native")]
 mod hdfs_native;
+#[cfg(feature = "services-hdfs-native")]
 pub use hdfs_native::*;
 
+#[cfg(feature = "services-http")]
 mod http;
+#[cfg(feature = "services-http")]
 pub use self::http::*;
 
+#[cfg(feature = "services-huggingface")]
 mod huggingface;
+#[cfg(feature = "services-huggingface")]
 pub use huggingface::*;
 
+#[cfg(feature = "services-ipfs")]
 mod ipfs;
+#[cfg(feature = "services-ipfs")]
 pub use self::ipfs::*;
 
+#[cfg(feature = "services-ipmfs")]
 mod ipmfs;
+#[cfg(feature = "services-ipmfs")]
 pub use ipmfs::*;
 
+#[cfg(feature = "services-koofr")]
 mod koofr;
+#[cfg(feature = "services-koofr")]
 pub use koofr::*;
 
+#[cfg(feature = "services-lakefs")]
 mod lakefs;
+#[cfg(feature = "services-lakefs")]
 pub use lakefs::*;
 
+#[cfg(feature = "services-memcached")]
 mod memcached;
+#[cfg(feature = "services-memcached")]
 pub use memcached::*;
 
+#[cfg(feature = "services-memory")]
 mod memory;
+#[cfg(feature = "services-memory")]
 pub use self::memory::*;
 
+#[cfg(feature = "services-mini-moka")]
 mod mini_moka;
+#[cfg(feature = "services-mini-moka")]
 pub use self::mini_moka::*;
 
+#[cfg(feature = "services-moka")]
 mod moka;
+#[cfg(feature = "services-moka")]
 pub use self::moka::*;
 
+#[cfg(feature = "services-mongodb")]
 mod mongodb;
+#[cfg(feature = "services-mongodb")]
 pub use self::mongodb::*;
 
+#[cfg(feature = "services-monoiofs")]
 mod monoiofs;
+#[cfg(feature = "services-monoiofs")]
 pub use monoiofs::*;
 
+#[cfg(feature = "services-mysql")]
 mod mysql;
+#[cfg(feature = "services-mysql")]
 pub use self::mysql::*;
 
+#[cfg(feature = "services-obs")]
 mod obs;
+#[cfg(feature = "services-obs")]
 pub use obs::*;
 
+#[cfg(feature = "services-onedrive")]
 mod onedrive;
+#[cfg(feature = "services-onedrive")]
 pub use onedrive::*;
 
+#[cfg(feature = "services-oss")]
 mod oss;
+#[cfg(feature = "services-oss")]
 pub use oss::*;
 
+#[cfg(feature = "services-pcloud")]
 mod pcloud;
+#[cfg(feature = "services-pcloud")]
 pub use pcloud::*;
 
+#[cfg(feature = "services-persy")]
 mod persy;
+#[cfg(feature = "services-persy")]
 pub use self::persy::*;
 
+#[cfg(feature = "services-postgresql")]
 mod postgresql;
+#[cfg(feature = "services-postgresql")]
 pub use self::postgresql::*;
 
+#[cfg(feature = "services-redb")]
 mod redb;
+#[cfg(feature = "services-redb")]
 pub use self::redb::*;
 
+#[cfg(feature = "services-redis")]
 mod redis;
+#[cfg(feature = "services-redis")]
 pub use self::redis::*;
 
+#[cfg(feature = "services-rocksdb")]
 mod rocksdb;
+#[cfg(feature = "services-rocksdb")]
 pub use self::rocksdb::*;
 
+#[cfg(feature = "services-s3")]
 mod s3;
+#[cfg(feature = "services-s3")]
 pub use s3::*;
 
+#[cfg(feature = "services-seafile")]
 mod seafile;
+#[cfg(feature = "services-seafile")]
 pub use seafile::*;
 
+#[cfg(feature = "services-sftp")]
 mod sftp;
+#[cfg(feature = "services-sftp")]
 pub use sftp::*;
 
+#[cfg(feature = "services-sled")]
 mod sled;
+#[cfg(feature = "services-sled")]
 pub use self::sled::*;
 
+#[cfg(feature = "services-sqlite")]
 mod sqlite;
+#[cfg(feature = "services-sqlite")]
 pub use self::sqlite::*;
 
+#[cfg(feature = "services-surrealdb")]
 mod surrealdb;
+#[cfg(feature = "services-surrealdb")]
 pub use surrealdb::*;
 
+#[cfg(feature = "services-swift")]
 mod swift;
+#[cfg(feature = "services-swift")]
 pub use self::swift::*;
 
+#[cfg(feature = "services-tikv")]
 mod tikv;
+#[cfg(feature = "services-tikv")]
 pub use self::tikv::*;
 
+#[cfg(feature = "services-upyun")]
 mod upyun;
+#[cfg(feature = "services-upyun")]
 pub use upyun::*;
 
+#[cfg(feature = "services-vercel-artifacts")]
 mod vercel_artifacts;
+#[cfg(feature = "services-vercel-artifacts")]
 pub use vercel_artifacts::*;
 
+#[cfg(feature = "services-vercel-blob")]
 mod vercel_blob;
+#[cfg(feature = "services-vercel-blob")]
 pub use vercel_blob::*;
 
+#[cfg(feature = "services-webdav")]
 mod webdav;
+#[cfg(feature = "services-webdav")]
 pub use webdav::*;
 
+#[cfg(feature = "services-webhdfs")]
 mod webhdfs;
+#[cfg(feature = "services-webhdfs")]
 pub use webhdfs::*;
 
+#[cfg(feature = "services-yandex-disk")]
 mod yandex_disk;
+#[cfg(feature = "services-yandex-disk")]
 pub use yandex_disk::*;
 
-#[cfg(target_arch = "wasm32")]
+#[cfg(all(target_arch = "wasm32", feature = "services-opfs"))]
 mod opfs;
diff --git a/core/src/services/moka/mod.rs b/core/src/services/moka/mod.rs
index ccbeb0cc2..9393cdb89 100644
--- a/core/src/services/moka/mod.rs
+++ b/core/src/services/moka/mod.rs
@@ -16,25 +16,16 @@
 // under the License.
 
 /// Default scheme for moka service.
-#[cfg(feature = "services-moka")]
 pub(super) const DEFAULT_SCHEME: &str = "moka";
-#[cfg(feature = "services-moka")]
 mod backend;
-#[cfg(feature = "services-moka")]
 mod core;
-#[cfg(feature = "services-moka")]
 mod delete;
-#[cfg(feature = "services-moka")]
 mod lister;
-#[cfg(feature = "services-moka")]
 mod writer;
 
-#[cfg(feature = "services-moka")]
 pub use backend::MokaBuilder as Moka;
-#[cfg(feature = "services-moka")]
 pub use backend::MokaCacheBuilder;
 
-#[cfg(feature = "services-moka")]
 pub use core::MokaValue;
 
 mod config;
diff --git a/core/src/services/mongodb/mod.rs b/core/src/services/mongodb/mod.rs
index a276de95d..1ce9bd23d 100644
--- a/core/src/services/mongodb/mod.rs
+++ b/core/src/services/mongodb/mod.rs
@@ -15,9 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-mongodb")]
 mod backend;
-#[cfg(feature = "services-mongodb")]
 pub use backend::MongodbBuilder as Mongodb;
 
 mod config;
diff --git a/core/src/services/monoiofs/mod.rs b/core/src/services/monoiofs/mod.rs
index 9dbcb06f9..87b3b778e 100644
--- a/core/src/services/monoiofs/mod.rs
+++ b/core/src/services/monoiofs/mod.rs
@@ -16,20 +16,13 @@
 // under the License.
 
 /// Default scheme for monoiofs service.
-#[cfg(feature = "services-monoiofs")]
 pub(super) const DEFAULT_SCHEME: &str = "monoiofs";
-#[cfg(feature = "services-monoiofs")]
 mod core;
-#[cfg(feature = "services-monoiofs")]
 mod delete;
-#[cfg(feature = "services-monoiofs")]
 mod reader;
-#[cfg(feature = "services-monoiofs")]
 mod writer;
 
-#[cfg(feature = "services-monoiofs")]
 mod backend;
-#[cfg(feature = "services-monoiofs")]
 pub use backend::MonoiofsBuilder as Monoiofs;
 
 mod config;
diff --git a/core/src/services/mysql/mod.rs b/core/src/services/mysql/mod.rs
index 9b3338894..922b2315c 100644
--- a/core/src/services/mysql/mod.rs
+++ b/core/src/services/mysql/mod.rs
@@ -15,9 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-mysql")]
 mod backend;
-#[cfg(feature = "services-mysql")]
 pub use backend::MysqlBuilder as Mysql;
 
 mod config;
diff --git a/core/src/services/obs/mod.rs b/core/src/services/obs/mod.rs
index c33719f6a..ee2e0f183 100644
--- a/core/src/services/obs/mod.rs
+++ b/core/src/services/obs/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for obs service.
-#[cfg(feature = "services-obs")]
 pub const OBS_SCHEME: &str = "obs";
-#[cfg(feature = "services-obs")]
 mod core;
-#[cfg(feature = "services-obs")]
 mod delete;
-#[cfg(feature = "services-obs")]
 mod error;
-#[cfg(feature = "services-obs")]
 mod lister;
-#[cfg(feature = "services-obs")]
 mod writer;
 
-#[cfg(feature = "services-obs")]
 mod backend;
-#[cfg(feature = "services-obs")]
 pub use backend::ObsBuilder as Obs;
 
 mod config;
diff --git a/core/src/services/onedrive/mod.rs b/core/src/services/onedrive/mod.rs
index cd1a892b4..8183f3dd1 100644
--- a/core/src/services/onedrive/mod.rs
+++ b/core/src/services/onedrive/mod.rs
@@ -16,26 +16,16 @@
 // under the License.
 
 /// Default scheme for onedrive service.
-#[cfg(feature = "services-onedrive")]
 pub(super) const DEFAULT_SCHEME: &str = "onedrive";
-#[cfg(feature = "services-onedrive")]
 mod backend;
-#[cfg(feature = "services-onedrive")]
 mod core;
-#[cfg(feature = "services-onedrive")]
 mod delete;
-#[cfg(feature = "services-onedrive")]
 mod error;
-#[cfg(feature = "services-onedrive")]
 mod graph_model;
-#[cfg(feature = "services-onedrive")]
 mod lister;
-#[cfg(feature = "services-onedrive")]
 mod writer;
 
-#[cfg(feature = "services-onedrive")]
 mod builder;
-#[cfg(feature = "services-onedrive")]
 pub use builder::OnedriveBuilder as Onedrive;
 
 mod config;
diff --git a/core/src/services/opfs/mod.rs b/core/src/services/opfs/mod.rs
index c143d37b3..cbe59ee9e 100644
--- a/core/src/services/opfs/mod.rs
+++ b/core/src/services/opfs/mod.rs
@@ -15,16 +15,11 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-opfs")]
 mod backend;
-#[cfg(feature = "services-opfs")]
 mod core;
 
-#[cfg(feature = "services-opfs")]
 mod config;
 
-#[cfg(feature = "services-opfs")]
 mod error;
 
-#[cfg(feature = "services-opfs")]
 mod utils;
diff --git a/core/src/services/oss/mod.rs b/core/src/services/oss/mod.rs
index e3e05c1b6..f39bdf37e 100644
--- a/core/src/services/oss/mod.rs
+++ b/core/src/services/oss/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for oss service.
-#[cfg(feature = "services-oss")]
 pub const OSS_SCHEME: &str = "oss";
-#[cfg(feature = "services-oss")]
 mod core;
-#[cfg(feature = "services-oss")]
 mod delete;
-#[cfg(feature = "services-oss")]
 mod error;
-#[cfg(feature = "services-oss")]
 mod lister;
-#[cfg(feature = "services-oss")]
 mod writer;
 
-#[cfg(feature = "services-oss")]
 mod backend;
-#[cfg(feature = "services-oss")]
 pub use backend::OssBuilder as Oss;
 
 mod config;
diff --git a/core/src/services/pcloud/mod.rs b/core/src/services/pcloud/mod.rs
index 139528f7f..fdcf2bb2f 100644
--- a/core/src/services/pcloud/mod.rs
+++ b/core/src/services/pcloud/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for pcloud service.
-#[cfg(feature = "services-pcloud")]
 pub(super) const DEFAULT_SCHEME: &str = "pcloud";
-#[cfg(feature = "services-pcloud")]
 mod core;
-#[cfg(feature = "services-pcloud")]
 mod delete;
-#[cfg(feature = "services-pcloud")]
 mod error;
-#[cfg(feature = "services-pcloud")]
 mod lister;
-#[cfg(feature = "services-pcloud")]
 mod writer;
 
-#[cfg(feature = "services-pcloud")]
 mod backend;
-#[cfg(feature = "services-pcloud")]
 pub use backend::PcloudBuilder as Pcloud;
 
 mod config;
diff --git a/core/src/services/persy/mod.rs b/core/src/services/persy/mod.rs
index 005f345ff..6c387ff15 100644
--- a/core/src/services/persy/mod.rs
+++ b/core/src/services/persy/mod.rs
@@ -15,9 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-persy")]
 mod backend;
-#[cfg(feature = "services-persy")]
 pub use backend::PersyBuilder as Persy;
 
 mod config;
diff --git a/core/src/services/postgresql/mod.rs b/core/src/services/postgresql/mod.rs
index 1f1d666eb..bba64b60c 100644
--- a/core/src/services/postgresql/mod.rs
+++ b/core/src/services/postgresql/mod.rs
@@ -15,9 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-postgresql")]
 mod backend;
-#[cfg(feature = "services-postgresql")]
 pub use backend::PostgresqlBuilder as Postgresql;
 
 mod config;
diff --git a/core/src/services/redb/mod.rs b/core/src/services/redb/mod.rs
index 1c44bcd06..e13f5e6b2 100644
--- a/core/src/services/redb/mod.rs
+++ b/core/src/services/redb/mod.rs
@@ -15,9 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-redb")]
 mod backend;
-#[cfg(feature = "services-redb")]
 pub use backend::RedbBuilder as Redb;
 
 mod config;
diff --git a/core/src/services/redis/mod.rs b/core/src/services/redis/mod.rs
index dc187886b..91de87438 100644
--- a/core/src/services/redis/mod.rs
+++ b/core/src/services/redis/mod.rs
@@ -16,18 +16,12 @@
 // under the License.
 
 /// Default scheme for redis service.
-#[cfg(feature = "services-redis")]
 pub(super) const DEFAULT_SCHEME: &str = "redis";
-#[cfg(feature = "services-redis")]
 mod backend;
-#[cfg(feature = "services-redis")]
 mod core;
-#[cfg(feature = "services-redis")]
 mod delete;
-#[cfg(feature = "services-redis")]
 mod writer;
 
-#[cfg(feature = "services-redis")]
 pub use backend::RedisBuilder as Redis;
 
 mod config;
diff --git a/core/src/services/rocksdb/mod.rs b/core/src/services/rocksdb/mod.rs
index d859ce4c7..9a55a345e 100644
--- a/core/src/services/rocksdb/mod.rs
+++ b/core/src/services/rocksdb/mod.rs
@@ -15,9 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-rocksdb")]
 mod backend;
-#[cfg(feature = "services-rocksdb")]
 pub use backend::RocksdbBuilder as Rocksdb;
 
 mod config;
diff --git a/core/src/services/s3/mod.rs b/core/src/services/s3/mod.rs
index ab1c0810e..a0052ac1b 100644
--- a/core/src/services/s3/mod.rs
+++ b/core/src/services/s3/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for s3 service.
-#[cfg(feature = "services-s3")]
 pub const S3_SCHEME: &str = "s3";
-#[cfg(feature = "services-s3")]
 mod core;
-#[cfg(feature = "services-s3")]
 mod delete;
-#[cfg(feature = "services-s3")]
 mod error;
-#[cfg(feature = "services-s3")]
 mod lister;
-#[cfg(feature = "services-s3")]
 mod writer;
 
-#[cfg(feature = "services-s3")]
 mod backend;
-#[cfg(feature = "services-s3")]
 pub use backend::S3Builder as S3;
 
 mod config;
diff --git a/core/src/services/seafile/mod.rs b/core/src/services/seafile/mod.rs
index e08c059cb..ac371b4e2 100644
--- a/core/src/services/seafile/mod.rs
+++ b/core/src/services/seafile/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for seafile service.
-#[cfg(feature = "services-seafile")]
 pub(super) const DEFAULT_SCHEME: &str = "seafile";
-#[cfg(feature = "services-seafile")]
 mod core;
-#[cfg(feature = "services-seafile")]
 mod delete;
-#[cfg(feature = "services-seafile")]
 mod error;
-#[cfg(feature = "services-seafile")]
 mod lister;
-#[cfg(feature = "services-seafile")]
 mod writer;
 
-#[cfg(feature = "services-seafile")]
 mod backend;
-#[cfg(feature = "services-seafile")]
 pub use backend::SeafileBuilder as Seafile;
 
 mod config;
diff --git a/core/src/services/sftp/mod.rs b/core/src/services/sftp/mod.rs
index 537edfd3e..e513792d1 100644
--- a/core/src/services/sftp/mod.rs
+++ b/core/src/services/sftp/mod.rs
@@ -16,26 +16,16 @@
 // under the License.
 
 /// Default scheme for sftp service.
-#[cfg(feature = "services-sftp")]
 pub(super) const DEFAULT_SCHEME: &str = "sftp";
-#[cfg(feature = "services-sftp")]
 mod delete;
-#[cfg(feature = "services-sftp")]
 mod error;
-#[cfg(feature = "services-sftp")]
 mod lister;
-#[cfg(feature = "services-sftp")]
 mod reader;
-#[cfg(feature = "services-sftp")]
 mod utils;
-#[cfg(feature = "services-sftp")]
 mod writer;
 
-#[cfg(feature = "services-sftp")]
 mod backend;
-#[cfg(feature = "services-sftp")]
 pub use backend::SftpBuilder as Sftp;
-#[cfg(feature = "services-sftp")]
 mod core;
 
 mod config;
diff --git a/core/src/services/sled/mod.rs b/core/src/services/sled/mod.rs
index f8771b65f..49794745a 100644
--- a/core/src/services/sled/mod.rs
+++ b/core/src/services/sled/mod.rs
@@ -15,9 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-sled")]
 mod backend;
-#[cfg(feature = "services-sled")]
 pub use backend::SledBuilder as Sled;
 
 mod config;
diff --git a/core/src/services/sqlite/mod.rs b/core/src/services/sqlite/mod.rs
index 32dfb9177..2d69236c0 100644
--- a/core/src/services/sqlite/mod.rs
+++ b/core/src/services/sqlite/mod.rs
@@ -15,9 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-sqlite")]
 mod backend;
-#[cfg(feature = "services-sqlite")]
 pub use backend::SqliteBuilder as Sqlite;
 
 mod config;
diff --git a/core/src/services/surrealdb/mod.rs b/core/src/services/surrealdb/mod.rs
index 40cabaf71..a427aac3b 100644
--- a/core/src/services/surrealdb/mod.rs
+++ b/core/src/services/surrealdb/mod.rs
@@ -15,9 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-surrealdb")]
 mod backend;
-#[cfg(feature = "services-surrealdb")]
 pub use backend::SurrealdbBuilder as Surrealdb;
 
 mod config;
diff --git a/core/src/services/swift/mod.rs b/core/src/services/swift/mod.rs
index 0928a0132..fd8277ab9 100644
--- a/core/src/services/swift/mod.rs
+++ b/core/src/services/swift/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for swift service.
-#[cfg(feature = "services-swift")]
 pub(super) const DEFAULT_SCHEME: &str = "swift";
-#[cfg(feature = "services-swift")]
 mod core;
-#[cfg(feature = "services-swift")]
 mod delete;
-#[cfg(feature = "services-swift")]
 mod error;
-#[cfg(feature = "services-swift")]
 mod lister;
-#[cfg(feature = "services-swift")]
 mod writer;
 
-#[cfg(feature = "services-swift")]
 mod backend;
-#[cfg(feature = "services-swift")]
 pub use backend::SwiftBuilder as Swift;
 
 mod config;
diff --git a/core/src/services/tikv/mod.rs b/core/src/services/tikv/mod.rs
index 36bf76344..f521407fb 100644
--- a/core/src/services/tikv/mod.rs
+++ b/core/src/services/tikv/mod.rs
@@ -15,9 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#[cfg(feature = "services-tikv")]
 mod backend;
-#[cfg(feature = "services-tikv")]
 pub use backend::TikvBuilder as Tikv;
 
 mod config;
diff --git a/core/src/services/upyun/mod.rs b/core/src/services/upyun/mod.rs
index 50db7493e..98835b5b3 100644
--- a/core/src/services/upyun/mod.rs
+++ b/core/src/services/upyun/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for upyun service.
-#[cfg(feature = "services-upyun")]
 pub const UPYUN_SCHEME: &str = "upyun";
-#[cfg(feature = "services-upyun")]
 mod core;
-#[cfg(feature = "services-upyun")]
 mod delete;
-#[cfg(feature = "services-upyun")]
 mod error;
-#[cfg(feature = "services-upyun")]
 mod lister;
-#[cfg(feature = "services-upyun")]
 mod writer;
 
-#[cfg(feature = "services-upyun")]
 mod backend;
-#[cfg(feature = "services-upyun")]
 pub use backend::UpyunBuilder as Upyun;
 
 mod config;
diff --git a/core/src/services/vercel_artifacts/mod.rs b/core/src/services/vercel_artifacts/mod.rs
index 086f792c0..60b9774c7 100644
--- a/core/src/services/vercel_artifacts/mod.rs
+++ b/core/src/services/vercel_artifacts/mod.rs
@@ -16,20 +16,13 @@
 // under the License.
 
 /// Default scheme for vercel_artifacts service.
-#[cfg(feature = "services-vercel-artifacts")]
 pub(super) const DEFAULT_SCHEME: &str = "vercel_artifacts";
-#[cfg(feature = "services-vercel-artifacts")]
 mod backend;
-#[cfg(feature = "services-vercel-artifacts")]
 mod core;
-#[cfg(feature = "services-vercel-artifacts")]
 mod error;
-#[cfg(feature = "services-vercel-artifacts")]
 mod writer;
 
-#[cfg(feature = "services-vercel-artifacts")]
 mod builder;
-#[cfg(feature = "services-vercel-artifacts")]
 pub use builder::VercelArtifactsBuilder as VercelArtifacts;
 
 mod config;
diff --git a/core/src/services/vercel_blob/mod.rs b/core/src/services/vercel_blob/mod.rs
index cb2aed418..5658cf65c 100644
--- a/core/src/services/vercel_blob/mod.rs
+++ b/core/src/services/vercel_blob/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for vercel_blob service.
-#[cfg(feature = "services-vercel-blob")]
 pub(super) const DEFAULT_SCHEME: &str = "vercel_blob";
-#[cfg(feature = "services-vercel-blob")]
 mod core;
-#[cfg(feature = "services-vercel-blob")]
 mod delete;
-#[cfg(feature = "services-vercel-blob")]
 mod error;
-#[cfg(feature = "services-vercel-blob")]
 mod lister;
-#[cfg(feature = "services-vercel-blob")]
 mod writer;
 
-#[cfg(feature = "services-vercel-blob")]
 mod backend;
-#[cfg(feature = "services-vercel-blob")]
 pub use backend::VercelBlobBuilder as VercelBlob;
 
 mod config;
diff --git a/core/src/services/webdav/mod.rs b/core/src/services/webdav/mod.rs
index 20ba1d3dc..0fd91e5bf 100644
--- a/core/src/services/webdav/mod.rs
+++ b/core/src/services/webdav/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for webdav service.
-#[cfg(feature = "services-webdav")]
 pub(super) const DEFAULT_SCHEME: &str = "webdav";
-#[cfg(feature = "services-webdav")]
 mod core;
-#[cfg(feature = "services-webdav")]
 mod delete;
-#[cfg(feature = "services-webdav")]
 mod error;
-#[cfg(feature = "services-webdav")]
 mod lister;
-#[cfg(feature = "services-webdav")]
 mod writer;
 
-#[cfg(feature = "services-webdav")]
 mod backend;
-#[cfg(feature = "services-webdav")]
 pub use backend::WebdavBuilder as Webdav;
 
 mod config;
diff --git a/core/src/services/webhdfs/mod.rs b/core/src/services/webhdfs/mod.rs
index 4336f2eb6..2e83c6fb9 100644
--- a/core/src/services/webhdfs/mod.rs
+++ b/core/src/services/webhdfs/mod.rs
@@ -16,25 +16,16 @@
 // under the License.
 
 /// Default scheme for webhdfs service.
-#[cfg(feature = "services-webhdfs")]
 pub(super) const DEFAULT_SCHEME: &str = "webhdfs";
-#[cfg(feature = "services-webhdfs")]
 mod delete;
-#[cfg(feature = "services-webhdfs")]
 mod error;
-#[cfg(feature = "services-webhdfs")]
 mod lister;
-#[cfg(feature = "services-webhdfs")]
 mod message;
-#[cfg(feature = "services-webhdfs")]
 mod writer;
 
-#[cfg(feature = "services-webhdfs")]
 mod backend;
-#[cfg(feature = "services-webhdfs")]
 pub use backend::WebhdfsBuilder as Webhdfs;
 
-#[cfg(feature = "services-webhdfs")]
 mod core;
 
 mod config;
diff --git a/core/src/services/yandex_disk/mod.rs b/core/src/services/yandex_disk/mod.rs
index 7e2129491..ed15e07ee 100644
--- a/core/src/services/yandex_disk/mod.rs
+++ b/core/src/services/yandex_disk/mod.rs
@@ -16,22 +16,14 @@
 // under the License.
 
 /// Default scheme for yandex_disk service.
-#[cfg(feature = "services-yandex-disk")]
 pub(super) const DEFAULT_SCHEME: &str = "yandex_disk";
-#[cfg(feature = "services-yandex-disk")]
 mod core;
-#[cfg(feature = "services-yandex-disk")]
 mod delete;
-#[cfg(feature = "services-yandex-disk")]
 mod error;
-#[cfg(feature = "services-yandex-disk")]
 mod lister;
-#[cfg(feature = "services-yandex-disk")]
 mod writer;
 
-#[cfg(feature = "services-yandex-disk")]
 mod backend;
-#[cfg(feature = "services-yandex-disk")]
 pub use backend::YandexDiskBuilder as YandexDisk;
 
 mod config;
diff --git a/core/src/types/operator/registry.rs b/core/src/types/operator/registry.rs
index 006c6d843..1a4efb801 100644
--- a/core/src/types/operator/registry.rs
+++ b/core/src/types/operator/registry.rs
@@ -18,7 +18,6 @@
 use std::collections::HashMap;
 use std::sync::{LazyLock, Mutex};
 
-use crate::services;
 use crate::types::builder::{Builder, Configurator};
 use crate::types::{IntoOperatorUri, OperatorUri};
 use crate::{Error, ErrorKind, Operator, Result};
@@ -78,26 +77,28 @@ impl OperatorRegistry {
 }
 
 fn register_builtin_services(registry: &OperatorRegistry) {
+    let _ = registry;
+
     #[cfg(feature = "services-memory")]
-    registry.register::<services::Memory>(services::MEMORY_SCHEME);
+    registry.register::<crate::services::Memory>(crate::services::MEMORY_SCHEME);
     #[cfg(feature = "services-fs")]
-    registry.register::<services::Fs>(services::FS_SCHEME);
+    registry.register::<crate::services::Fs>(crate::services::FS_SCHEME);
     #[cfg(feature = "services-s3")]
-    registry.register::<services::S3>(services::S3_SCHEME);
+    registry.register::<crate::services::S3>(crate::services::S3_SCHEME);
     #[cfg(feature = "services-azblob")]
-    registry.register::<services::Azblob>(services::AZBLOB_SCHEME);
+    registry.register::<crate::services::Azblob>(crate::services::AZBLOB_SCHEME);
     #[cfg(feature = "services-b2")]
-    registry.register::<services::B2>(services::B2_SCHEME);
+    registry.register::<crate::services::B2>(crate::services::B2_SCHEME);
     #[cfg(feature = "services-cos")]
-    registry.register::<services::Cos>(services::COS_SCHEME);
+    registry.register::<crate::services::Cos>(crate::services::COS_SCHEME);
     #[cfg(feature = "services-gcs")]
-    registry.register::<services::Gcs>(services::GCS_SCHEME);
+    registry.register::<crate::services::Gcs>(crate::services::GCS_SCHEME);
     #[cfg(feature = "services-obs")]
-    registry.register::<services::Obs>(services::OBS_SCHEME);
+    registry.register::<crate::services::Obs>(crate::services::OBS_SCHEME);
     #[cfg(feature = "services-oss")]
-    registry.register::<services::Oss>(services::OSS_SCHEME);
+    registry.register::<crate::services::Oss>(crate::services::OSS_SCHEME);
     #[cfg(feature = "services-upyun")]
-    registry.register::<services::Upyun>(services::UPYUN_SCHEME);
+    registry.register::<crate::services::Upyun>(crate::services::UPYUN_SCHEME);
 }
 
 /// Factory adapter that builds an operator from a configurator type.