1#![doc(
19 html_logo_url = "https://raw.githubusercontent.com/apache/opendal/main/website/static/img/logo.svg"
20)]
21#![cfg_attr(docsrs, feature(doc_cfg))]
22#![deny(missing_docs)]
24
25pub use opendal_core::*;
26
27#[cfg(feature = "tests")]
28pub extern crate opendal_testkit as tests;
29
30pub fn init_default_registry() {
42 static DEFAULT_REGISTRY_INIT: std::sync::Once = std::sync::Once::new();
43 DEFAULT_REGISTRY_INIT.call_once(|| init_default_registry_inner(OperatorRegistry::get()));
44}
45
46fn init_default_registry_inner(registry: &OperatorRegistry) {
47 opendal_core::services::register_memory_service(registry);
48
49 #[cfg(feature = "services-aliyun-drive")]
50 opendal_service_aliyun_drive::register_aliyun_drive_service(registry);
51
52 #[cfg(feature = "services-alluxio")]
53 opendal_service_alluxio::register_alluxio_service(registry);
54
55 #[cfg(feature = "services-azblob")]
56 opendal_service_azblob::register_azblob_service(registry);
57
58 #[cfg(feature = "services-azdls")]
59 opendal_service_azdls::register_azdls_service(registry);
60
61 #[cfg(feature = "services-azfile")]
62 opendal_service_azfile::register_azfile_service(registry);
63
64 #[cfg(feature = "services-b2")]
65 opendal_service_b2::register_b2_service(registry);
66
67 #[cfg(feature = "services-cacache")]
68 opendal_service_cacache::register_cacache_service(registry);
69
70 #[cfg(feature = "services-cloudflare-kv")]
71 opendal_service_cloudflare_kv::register_cloudflare_kv_service(registry);
72
73 #[cfg(feature = "services-compfs")]
74 opendal_service_compfs::register_compfs_service(registry);
75
76 #[cfg(feature = "services-cos")]
77 opendal_service_cos::register_cos_service(registry);
78
79 #[cfg(feature = "services-d1")]
80 opendal_service_d1::register_d1_service(registry);
81
82 #[cfg(feature = "services-dashmap")]
83 opendal_service_dashmap::register_dashmap_service(registry);
84
85 #[cfg(feature = "services-dbfs")]
86 opendal_service_dbfs::register_dbfs_service(registry);
87
88 #[cfg(feature = "services-dropbox")]
89 opendal_service_dropbox::register_dropbox_service(registry);
90
91 #[cfg(feature = "services-etcd")]
92 opendal_service_etcd::register_etcd_service(registry);
93
94 #[cfg(feature = "services-foundationdb")]
95 opendal_service_foundationdb::register_foundationdb_service(registry);
96
97 #[cfg(feature = "services-fs")]
98 opendal_service_fs::register_fs_service(registry);
99
100 #[cfg(feature = "services-ftp")]
101 opendal_service_ftp::register_ftp_service(registry);
102
103 #[cfg(feature = "services-gcs")]
104 opendal_service_gcs::register_gcs_service(registry);
105
106 #[cfg(feature = "services-gdrive")]
107 opendal_service_gdrive::register_gdrive_service(registry);
108
109 #[cfg(feature = "services-ghac")]
110 opendal_service_ghac::register_ghac_service(registry);
111
112 #[cfg(feature = "services-github")]
113 opendal_service_github::register_github_service(registry);
114
115 #[cfg(feature = "services-gridfs")]
116 opendal_service_gridfs::register_gridfs_service(registry);
117
118 #[cfg(feature = "services-hdfs")]
119 opendal_service_hdfs::register_hdfs_service(registry);
120
121 #[cfg(feature = "services-hdfs-native")]
122 opendal_service_hdfs_native::register_hdfs_native_service(registry);
123
124 #[cfg(feature = "services-http")]
125 opendal_service_http::register_http_service(registry);
126
127 #[cfg(feature = "services-hf")]
128 opendal_service_hf::register_hf_service(registry);
129
130 #[cfg(feature = "services-ipfs")]
131 opendal_service_ipfs::register_ipfs_service(registry);
132
133 #[cfg(feature = "services-ipmfs")]
134 opendal_service_ipmfs::register_ipmfs_service(registry);
135
136 #[cfg(feature = "services-koofr")]
137 opendal_service_koofr::register_koofr_service(registry);
138
139 #[cfg(feature = "services-lakefs")]
140 opendal_service_lakefs::register_lakefs_service(registry);
141
142 #[cfg(feature = "services-memcached")]
143 opendal_service_memcached::register_memcached_service(registry);
144
145 #[cfg(feature = "services-mini-moka")]
146 opendal_service_mini_moka::register_mini_moka_service(registry);
147
148 #[cfg(feature = "services-moka")]
149 opendal_service_moka::register_moka_service(registry);
150
151 #[cfg(feature = "services-mongodb")]
152 opendal_service_mongodb::register_mongodb_service(registry);
153
154 #[cfg(feature = "services-monoiofs")]
155 opendal_service_monoiofs::register_monoiofs_service(registry);
156
157 #[cfg(feature = "services-mysql")]
158 opendal_service_mysql::register_mysql_service(registry);
159
160 #[cfg(feature = "services-obs")]
161 opendal_service_obs::register_obs_service(registry);
162
163 #[cfg(feature = "services-onedrive")]
164 opendal_service_onedrive::register_onedrive_service(registry);
165
166 #[cfg(feature = "services-oss")]
167 opendal_service_oss::register_oss_service(registry);
168
169 #[cfg(feature = "services-pcloud")]
170 opendal_service_pcloud::register_pcloud_service(registry);
171
172 #[cfg(feature = "services-persy")]
173 opendal_service_persy::register_persy_service(registry);
174
175 #[cfg(feature = "services-postgresql")]
176 opendal_service_postgresql::register_postgresql_service(registry);
177
178 #[cfg(feature = "services-redb")]
179 opendal_service_redb::register_redb_service(registry);
180
181 #[cfg(feature = "services-rocksdb")]
182 opendal_service_rocksdb::register_rocksdb_service(registry);
183
184 #[cfg(feature = "services-s3")]
185 opendal_service_s3::register_s3_service(registry);
186
187 #[cfg(feature = "services-seafile")]
188 opendal_service_seafile::register_seafile_service(registry);
189
190 #[cfg(feature = "services-sftp")]
191 opendal_service_sftp::register_sftp_service(registry);
192
193 #[cfg(feature = "services-sled")]
194 opendal_service_sled::register_sled_service(registry);
195
196 #[cfg(feature = "services-sqlite")]
197 opendal_service_sqlite::register_sqlite_service(registry);
198
199 #[cfg(feature = "services-surrealdb")]
200 opendal_service_surrealdb::register_surrealdb_service(registry);
201
202 #[cfg(feature = "services-swift")]
203 opendal_service_swift::register_swift_service(registry);
204
205 #[cfg(feature = "services-tikv")]
206 opendal_service_tikv::register_tikv_service(registry);
207
208 #[cfg(feature = "services-tos")]
209 opendal_service_tos::register_tos_service(registry);
210
211 #[cfg(feature = "services-upyun")]
212 opendal_service_upyun::register_upyun_service(registry);
213
214 #[cfg(feature = "services-vercel-artifacts")]
215 opendal_service_vercel_artifacts::register_vercel_artifacts_service(registry);
216
217 #[cfg(feature = "services-vercel-blob")]
218 opendal_service_vercel_blob::register_vercel_blob_service(registry);
219
220 #[cfg(feature = "services-webdav")]
221 opendal_service_webdav::register_webdav_service(registry);
222
223 #[cfg(feature = "services-webhdfs")]
224 opendal_service_webhdfs::register_webhdfs_service(registry);
225
226 #[cfg(feature = "services-yandex-disk")]
227 opendal_service_yandex_disk::register_yandex_disk_service(registry);
228
229 #[cfg(all(target_arch = "wasm32", feature = "services-opfs"))]
230 opendal_service_opfs::register_opfs_service(registry);
231
232 #[cfg(any(feature = "services-redis", feature = "services-redis-native-tls"))]
233 opendal_service_redis::register_redis_service(registry);
234}
235
236#[cfg(feature = "auto-register-services")]
237#[ctor::ctor]
238fn register_default_operator_registry() {
239 init_default_registry();
240}
241
242pub mod services {
244 pub use opendal_core::services::*;
245 #[cfg(feature = "services-aliyun-drive")]
246 pub use opendal_service_aliyun_drive::*;
247 #[cfg(feature = "services-alluxio")]
248 pub use opendal_service_alluxio::*;
249 #[cfg(feature = "services-azblob")]
250 pub use opendal_service_azblob::*;
251 #[cfg(feature = "services-azdls")]
252 pub use opendal_service_azdls::*;
253 #[cfg(feature = "services-azfile")]
254 pub use opendal_service_azfile::*;
255 #[cfg(feature = "services-b2")]
256 pub use opendal_service_b2::*;
257 #[cfg(feature = "services-cacache")]
258 pub use opendal_service_cacache::*;
259 #[cfg(feature = "services-cloudflare-kv")]
260 pub use opendal_service_cloudflare_kv::*;
261 #[cfg(feature = "services-compfs")]
262 pub use opendal_service_compfs::*;
263 #[cfg(feature = "services-cos")]
264 pub use opendal_service_cos::*;
265 #[cfg(feature = "services-d1")]
266 pub use opendal_service_d1::*;
267 #[cfg(feature = "services-dashmap")]
268 pub use opendal_service_dashmap::*;
269 #[cfg(feature = "services-dbfs")]
270 pub use opendal_service_dbfs::*;
271 #[cfg(feature = "services-dropbox")]
272 pub use opendal_service_dropbox::*;
273 #[cfg(feature = "services-etcd")]
274 pub use opendal_service_etcd::*;
275 #[cfg(feature = "services-foundationdb")]
276 pub use opendal_service_foundationdb::*;
277 #[cfg(feature = "services-fs")]
278 pub use opendal_service_fs::*;
279 #[cfg(feature = "services-ftp")]
280 pub use opendal_service_ftp::*;
281 #[cfg(feature = "services-gcs")]
282 pub use opendal_service_gcs::*;
283 #[cfg(feature = "services-gdrive")]
284 pub use opendal_service_gdrive::*;
285 #[cfg(feature = "services-ghac")]
286 pub use opendal_service_ghac::*;
287 #[cfg(feature = "services-github")]
288 pub use opendal_service_github::*;
289 #[cfg(feature = "services-gridfs")]
290 pub use opendal_service_gridfs::*;
291 #[cfg(feature = "services-hdfs")]
292 pub use opendal_service_hdfs::*;
293 #[cfg(feature = "services-hdfs-native")]
294 pub use opendal_service_hdfs_native::*;
295 #[cfg(feature = "services-hf")]
296 pub use opendal_service_hf::*;
297 #[cfg(feature = "services-http")]
298 pub use opendal_service_http::*;
299 #[cfg(feature = "services-ipfs")]
300 pub use opendal_service_ipfs::*;
301 #[cfg(feature = "services-ipmfs")]
302 pub use opendal_service_ipmfs::*;
303 #[cfg(feature = "services-koofr")]
304 pub use opendal_service_koofr::*;
305 #[cfg(feature = "services-lakefs")]
306 pub use opendal_service_lakefs::*;
307 #[cfg(feature = "services-memcached")]
308 pub use opendal_service_memcached::*;
309 #[cfg(feature = "services-mini-moka")]
310 pub use opendal_service_mini_moka::*;
311 #[cfg(feature = "services-moka")]
312 pub use opendal_service_moka::*;
313 #[cfg(feature = "services-mongodb")]
314 pub use opendal_service_mongodb::*;
315 #[cfg(feature = "services-monoiofs")]
316 pub use opendal_service_monoiofs::*;
317 #[cfg(feature = "services-mysql")]
318 pub use opendal_service_mysql::*;
319 #[cfg(feature = "services-obs")]
320 pub use opendal_service_obs::*;
321 #[cfg(feature = "services-onedrive")]
322 pub use opendal_service_onedrive::*;
323 #[cfg(all(target_arch = "wasm32", feature = "services-opfs"))]
324 pub use opendal_service_opfs::*;
325 #[cfg(feature = "services-oss")]
326 pub use opendal_service_oss::*;
327 #[cfg(feature = "services-pcloud")]
328 pub use opendal_service_pcloud::*;
329 #[cfg(feature = "services-persy")]
330 pub use opendal_service_persy::*;
331 #[cfg(feature = "services-postgresql")]
332 pub use opendal_service_postgresql::*;
333 #[cfg(feature = "services-redb")]
334 pub use opendal_service_redb::*;
335 #[cfg(feature = "services-redis")]
336 pub use opendal_service_redis::*;
337 #[cfg(feature = "services-rocksdb")]
338 pub use opendal_service_rocksdb::*;
339 #[cfg(feature = "services-s3")]
340 pub use opendal_service_s3::*;
341 #[cfg(feature = "services-seafile")]
342 pub use opendal_service_seafile::*;
343 #[cfg(feature = "services-sftp")]
344 pub use opendal_service_sftp::*;
345 #[cfg(feature = "services-sled")]
346 pub use opendal_service_sled::*;
347 #[cfg(feature = "services-sqlite")]
348 pub use opendal_service_sqlite::*;
349 #[cfg(feature = "services-surrealdb")]
350 pub use opendal_service_surrealdb::*;
351 #[cfg(feature = "services-swift")]
352 pub use opendal_service_swift::*;
353 #[cfg(feature = "services-tikv")]
354 pub use opendal_service_tikv::*;
355 #[cfg(feature = "services-upyun")]
356 pub use opendal_service_upyun::*;
357 #[cfg(feature = "services-vercel-artifacts")]
358 pub use opendal_service_vercel_artifacts::*;
359 #[cfg(feature = "services-vercel-blob")]
360 pub use opendal_service_vercel_blob::*;
361 #[cfg(feature = "services-webdav")]
362 pub use opendal_service_webdav::*;
363 #[cfg(feature = "services-webhdfs")]
364 pub use opendal_service_webhdfs::*;
365 #[cfg(feature = "services-yandex-disk")]
366 pub use opendal_service_yandex_disk::*;
367}
368
369pub mod layers {
371 pub use opendal_core::layers::*;
372 #[cfg(feature = "layers-async-backtrace")]
373 pub use opendal_layer_async_backtrace::*;
374 #[cfg(feature = "layers-await-tree")]
375 pub use opendal_layer_await_tree::*;
376 #[cfg(feature = "layers-capability-check")]
377 pub use opendal_layer_capability_check::*;
378 #[cfg(feature = "layers-chaos")]
379 pub use opendal_layer_chaos::*;
380 #[cfg(feature = "layers-concurrent-limit")]
381 pub use opendal_layer_concurrent_limit::*;
382 #[cfg(all(target_os = "linux", feature = "layers-dtrace"))]
383 pub use opendal_layer_dtrace::*;
384 #[cfg(feature = "layers-fastmetrics")]
385 pub use opendal_layer_fastmetrics::*;
386 #[cfg(feature = "layers-fastrace")]
387 pub use opendal_layer_fastrace::*;
388 #[cfg(feature = "layers-foyer")]
389 pub use opendal_layer_foyer::*;
390 #[cfg(feature = "layers-hotpath")]
391 pub use opendal_layer_hotpath::*;
392 #[cfg(feature = "layers-immutable-index")]
393 pub use opendal_layer_immutable_index::*;
394 #[cfg(feature = "layers-logging")]
395 pub use opendal_layer_logging::*;
396 #[cfg(feature = "layers-metrics")]
397 pub use opendal_layer_metrics::*;
398 #[cfg(feature = "layers-mime-guess")]
399 pub use opendal_layer_mime_guess::*;
400 #[cfg(feature = "layers-otel-metrics")]
401 pub use opendal_layer_otelmetrics::*;
402 #[cfg(feature = "layers-otel-trace")]
403 pub use opendal_layer_oteltrace::*;
404 #[cfg(feature = "layers-prometheus")]
405 pub use opendal_layer_prometheus::*;
406 #[cfg(feature = "layers-prometheus-client")]
407 pub use opendal_layer_prometheus_client::*;
408 #[cfg(feature = "layers-retry")]
409 pub use opendal_layer_retry::*;
410 #[cfg(feature = "layers-route")]
411 pub use opendal_layer_route::*;
412 #[cfg(feature = "layers-tail-cut")]
413 pub use opendal_layer_tail_cut::*;
414 #[cfg(feature = "layers-throttle")]
415 pub use opendal_layer_throttle::*;
416 #[cfg(feature = "layers-timeout")]
417 pub use opendal_layer_timeout::*;
418 #[cfg(feature = "layers-tracing")]
419 pub use opendal_layer_tracing::*;
420}