opendal 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (656) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -1
  3. data/Cargo.lock +3448 -0
  4. data/Cargo.toml +1 -1
  5. data/DEPENDENCIES.rust.tsv +31 -31
  6. data/README.md +4 -1
  7. data/Rakefile +0 -7
  8. data/core/CHANGELOG.md +80 -0
  9. data/core/Cargo.lock +495 -599
  10. data/core/Cargo.toml +98 -95
  11. data/core/DEPENDENCIES.rust.tsv +319 -324
  12. data/core/NOTICE +5 -0
  13. data/core/README.md +11 -6
  14. data/core/benches/vs_fs/Cargo.toml +1 -1
  15. data/core/benches/vs_s3/Cargo.toml +1 -1
  16. data/core/core/Cargo.toml +2 -2
  17. data/core/core/LICENSE +201 -0
  18. data/core/core/NOTICE +5 -0
  19. data/core/core/README.md +93 -0
  20. data/core/core/src/blocking/delete.rs +2 -2
  21. data/core/core/src/blocking/list.rs +2 -1
  22. data/core/core/src/blocking/operator.rs +10 -5
  23. data/core/core/src/blocking/read/std_bytes_iterator.rs +2 -1
  24. data/core/core/src/blocking/read/std_reader.rs +2 -1
  25. data/core/core/src/blocking/write/std_writer.rs +1 -1
  26. data/core/core/src/docs/performance/http_optimization.md +9 -1
  27. data/core/core/src/docs/rfcs/7749_http_transporter.md +9 -5
  28. data/core/core/src/layers/mod.rs +6 -1
  29. data/core/core/src/lib.rs +2 -137
  30. data/core/core/src/raw/accessor.rs +23 -21
  31. data/core/core/src/raw/oio/buf/queue_buf.rs +4 -2
  32. data/core/core/src/raw/oio/write/block_write.rs +3 -2
  33. data/core/core/src/raw/operation.rs +5 -5
  34. data/core/core/src/raw/ops.rs +85 -63
  35. data/core/core/src/raw/std_io_util.rs +33 -1
  36. data/core/core/src/services/memory/backend.rs +0 -1
  37. data/core/core/src/services/memory/mod.rs +6 -2
  38. data/core/core/src/services/mod.rs +8 -2
  39. data/core/core/src/types/buffer.rs +4 -4
  40. data/core/core/src/types/builder.rs +15 -17
  41. data/core/core/src/types/copy.rs +3 -3
  42. data/core/core/src/types/entry.rs +3 -1
  43. data/core/core/src/types/error.rs +16 -11
  44. data/core/core/src/types/execute/executors/mod.rs +3 -3
  45. data/core/core/src/types/http_transport/mod.rs +6 -0
  46. data/core/core/src/types/list.rs +5 -6
  47. data/core/core/src/types/operator/info.rs +6 -4
  48. data/core/core/src/types/operator/mod.rs +1 -1
  49. data/core/core/src/types/operator/operator.rs +42 -8
  50. data/core/core/src/types/operator/operator_futures.rs +36 -38
  51. data/core/core/src/types/operator/registry.rs +73 -14
  52. data/core/core/src/types/options.rs +48 -42
  53. data/core/core/src/types/read/reader.rs +2 -1
  54. data/core/core/src/types/write/writer.rs +2 -1
  55. data/core/http-transports/reqwest/Cargo.toml +2 -1
  56. data/core/http-transports/reqwest/LICENSE +201 -0
  57. data/core/http-transports/reqwest/NOTICE +5 -0
  58. data/core/http-transports/reqwest/README.md +37 -9
  59. data/core/http-transports/reqwest/src/lib.rs +30 -51
  60. data/core/layers/async-backtrace/Cargo.toml +3 -2
  61. data/core/layers/async-backtrace/LICENSE +201 -0
  62. data/core/layers/async-backtrace/NOTICE +5 -0
  63. data/core/layers/async-backtrace/README.md +48 -0
  64. data/core/layers/async-backtrace/src/lib.rs +5 -5
  65. data/core/layers/await-tree/Cargo.toml +3 -2
  66. data/core/layers/await-tree/LICENSE +201 -0
  67. data/core/layers/await-tree/NOTICE +5 -0
  68. data/core/layers/await-tree/README.md +48 -0
  69. data/core/layers/await-tree/src/lib.rs +5 -6
  70. data/core/layers/capability-check/Cargo.toml +3 -2
  71. data/core/layers/capability-check/LICENSE +201 -0
  72. data/core/layers/capability-check/NOTICE +5 -0
  73. data/core/layers/capability-check/README.md +48 -0
  74. data/core/layers/capability-check/src/lib.rs +7 -8
  75. data/core/layers/chaos/Cargo.toml +3 -2
  76. data/core/layers/chaos/LICENSE +201 -0
  77. data/core/layers/chaos/NOTICE +5 -0
  78. data/core/layers/chaos/README.md +47 -0
  79. data/core/layers/chaos/src/lib.rs +6 -7
  80. data/core/layers/concurrent-limit/Cargo.toml +3 -2
  81. data/core/layers/concurrent-limit/LICENSE +201 -0
  82. data/core/layers/concurrent-limit/NOTICE +5 -0
  83. data/core/layers/concurrent-limit/README.md +48 -0
  84. data/core/layers/concurrent-limit/src/lib.rs +8 -14
  85. data/core/layers/dtrace/Cargo.toml +3 -2
  86. data/core/layers/dtrace/LICENSE +201 -0
  87. data/core/layers/dtrace/NOTICE +5 -0
  88. data/core/layers/dtrace/README.md +52 -0
  89. data/core/layers/dtrace/src/lib.rs +5 -5
  90. data/core/layers/fastmetrics/Cargo.toml +4 -3
  91. data/core/layers/fastmetrics/LICENSE +201 -0
  92. data/core/layers/fastmetrics/NOTICE +5 -0
  93. data/core/layers/fastmetrics/README.md +47 -0
  94. data/core/layers/fastmetrics/src/lib.rs +4 -4
  95. data/core/layers/fastrace/Cargo.toml +3 -2
  96. data/core/layers/fastrace/LICENSE +201 -0
  97. data/core/layers/fastrace/NOTICE +5 -0
  98. data/core/layers/fastrace/README.md +47 -0
  99. data/core/layers/fastrace/src/lib.rs +5 -5
  100. data/core/layers/foyer/Cargo.toml +3 -2
  101. data/core/layers/foyer/LICENSE +201 -0
  102. data/core/layers/foyer/NOTICE +5 -0
  103. data/core/layers/foyer/README.md +47 -0
  104. data/core/layers/foyer/src/deleter.rs +1 -0
  105. data/core/layers/foyer/src/lib.rs +27 -10
  106. data/core/layers/foyer/src/writer.rs +1 -0
  107. data/core/layers/hotpath/Cargo.toml +4 -3
  108. data/core/layers/hotpath/LICENSE +201 -0
  109. data/core/layers/hotpath/NOTICE +5 -0
  110. data/core/layers/hotpath/README.md +47 -0
  111. data/core/layers/hotpath/src/lib.rs +4 -4
  112. data/core/layers/immutable-index/Cargo.toml +3 -2
  113. data/core/layers/immutable-index/LICENSE +201 -0
  114. data/core/layers/immutable-index/NOTICE +5 -0
  115. data/core/layers/immutable-index/README.md +48 -0
  116. data/core/layers/immutable-index/src/lib.rs +3 -4
  117. data/core/layers/logging/Cargo.toml +3 -2
  118. data/core/layers/logging/LICENSE +201 -0
  119. data/core/layers/logging/NOTICE +5 -0
  120. data/core/layers/logging/README.md +47 -0
  121. data/core/layers/logging/src/lib.rs +11 -11
  122. data/core/layers/metrics/Cargo.toml +4 -3
  123. data/core/layers/metrics/LICENSE +201 -0
  124. data/core/layers/metrics/NOTICE +5 -0
  125. data/core/layers/metrics/README.md +47 -0
  126. data/core/layers/metrics/src/lib.rs +6 -6
  127. data/core/layers/mime-guess/Cargo.toml +3 -2
  128. data/core/layers/mime-guess/LICENSE +201 -0
  129. data/core/layers/mime-guess/NOTICE +5 -0
  130. data/core/layers/mime-guess/README.md +47 -0
  131. data/core/layers/mime-guess/src/lib.rs +13 -17
  132. data/core/layers/observe-metrics-common/Cargo.toml +2 -1
  133. data/core/layers/observe-metrics-common/LICENSE +201 -0
  134. data/core/layers/observe-metrics-common/NOTICE +5 -0
  135. data/core/layers/observe-metrics-common/README.md +27 -0
  136. data/core/layers/observe-metrics-common/src/lib.rs +15 -9
  137. data/core/layers/otelmetrics/Cargo.toml +4 -3
  138. data/core/layers/otelmetrics/LICENSE +201 -0
  139. data/core/layers/otelmetrics/NOTICE +5 -0
  140. data/core/layers/otelmetrics/README.md +47 -0
  141. data/core/layers/otelmetrics/src/lib.rs +4 -4
  142. data/core/layers/oteltrace/Cargo.toml +3 -2
  143. data/core/layers/oteltrace/LICENSE +201 -0
  144. data/core/layers/oteltrace/NOTICE +5 -0
  145. data/core/layers/oteltrace/README.md +48 -0
  146. data/core/layers/oteltrace/src/lib.rs +13 -4
  147. data/core/layers/prometheus/Cargo.toml +4 -3
  148. data/core/layers/prometheus/LICENSE +201 -0
  149. data/core/layers/prometheus/NOTICE +5 -0
  150. data/core/layers/prometheus/README.md +47 -0
  151. data/core/layers/prometheus/src/lib.rs +4 -4
  152. data/core/layers/prometheus-client/Cargo.toml +4 -3
  153. data/core/layers/prometheus-client/LICENSE +201 -0
  154. data/core/layers/prometheus-client/NOTICE +5 -0
  155. data/core/layers/prometheus-client/README.md +48 -0
  156. data/core/layers/prometheus-client/src/lib.rs +4 -4
  157. data/core/layers/retry/Cargo.toml +5 -4
  158. data/core/layers/retry/LICENSE +201 -0
  159. data/core/layers/retry/NOTICE +5 -0
  160. data/core/layers/retry/README.md +50 -0
  161. data/core/layers/retry/src/lib.rs +6 -7
  162. data/core/layers/route/Cargo.toml +4 -3
  163. data/core/layers/route/LICENSE +201 -0
  164. data/core/layers/route/NOTICE +5 -0
  165. data/core/layers/route/README.md +58 -0
  166. data/core/layers/route/src/lib.rs +39 -9
  167. data/core/layers/tail-cut/Cargo.toml +3 -2
  168. data/core/layers/tail-cut/LICENSE +201 -0
  169. data/core/layers/tail-cut/NOTICE +5 -0
  170. data/core/layers/tail-cut/README.md +47 -0
  171. data/core/layers/tail-cut/src/lib.rs +7 -9
  172. data/core/layers/throttle/Cargo.toml +3 -2
  173. data/core/layers/throttle/LICENSE +201 -0
  174. data/core/layers/throttle/NOTICE +5 -0
  175. data/core/layers/throttle/README.md +47 -0
  176. data/core/layers/throttle/src/lib.rs +5 -7
  177. data/core/layers/timeout/Cargo.toml +4 -3
  178. data/core/layers/timeout/LICENSE +201 -0
  179. data/core/layers/timeout/NOTICE +5 -0
  180. data/core/layers/timeout/README.md +50 -0
  181. data/core/layers/timeout/src/lib.rs +9 -10
  182. data/core/layers/tracing/Cargo.toml +3 -2
  183. data/core/layers/tracing/LICENSE +201 -0
  184. data/core/layers/tracing/NOTICE +5 -0
  185. data/core/layers/tracing/README.md +47 -0
  186. data/core/layers/tracing/src/lib.rs +4 -4
  187. data/core/services/aliyun-drive/Cargo.toml +2 -1
  188. data/core/services/aliyun-drive/LICENSE +201 -0
  189. data/core/services/aliyun-drive/NOTICE +5 -0
  190. data/core/services/aliyun-drive/README.md +56 -0
  191. data/core/services/aliyun-drive/src/backend.rs +2 -2
  192. data/core/services/aliyun-drive/src/docs.md +7 -9
  193. data/core/services/aliyun-drive/src/lib.rs +12 -2
  194. data/core/services/aliyun-drive/src/lister.rs +2 -2
  195. data/core/services/alluxio/Cargo.toml +2 -1
  196. data/core/services/alluxio/LICENSE +201 -0
  197. data/core/services/alluxio/NOTICE +5 -0
  198. data/core/services/alluxio/README.md +56 -0
  199. data/core/services/alluxio/src/backend.rs +3 -3
  200. data/core/services/alluxio/src/docs.md +7 -5
  201. data/core/services/alluxio/src/lib.rs +12 -2
  202. data/core/services/azblob/Cargo.toml +6 -5
  203. data/core/services/azblob/LICENSE +201 -0
  204. data/core/services/azblob/NOTICE +5 -0
  205. data/core/services/azblob/README.md +56 -0
  206. data/core/services/azblob/src/backend.rs +3 -3
  207. data/core/services/azblob/src/core.rs +3 -3
  208. data/core/services/azblob/src/docs.md +7 -9
  209. data/core/services/azblob/src/lib.rs +14 -2
  210. data/core/services/azdls/Cargo.toml +6 -5
  211. data/core/services/azdls/LICENSE +201 -0
  212. data/core/services/azdls/NOTICE +5 -0
  213. data/core/services/azdls/README.md +56 -0
  214. data/core/services/azdls/src/backend.rs +3 -3
  215. data/core/services/azdls/src/docs.md +7 -8
  216. data/core/services/azdls/src/lib.rs +12 -2
  217. data/core/services/azdls/src/lister.rs +1 -1
  218. data/core/services/azfile/Cargo.toml +6 -5
  219. data/core/services/azfile/LICENSE +201 -0
  220. data/core/services/azfile/NOTICE +5 -0
  221. data/core/services/azfile/README.md +56 -0
  222. data/core/services/azfile/src/backend.rs +2 -2
  223. data/core/services/azfile/src/docs.md +7 -8
  224. data/core/services/azfile/src/lib.rs +12 -2
  225. data/core/services/azure-common/Cargo.toml +2 -1
  226. data/core/services/azure-common/LICENSE +201 -0
  227. data/core/services/azure-common/NOTICE +5 -0
  228. data/core/services/azure-common/README.md +26 -0
  229. data/core/services/azure-common/src/lib.rs +2 -5
  230. data/core/services/b2/Cargo.toml +2 -1
  231. data/core/services/b2/LICENSE +201 -0
  232. data/core/services/b2/NOTICE +5 -0
  233. data/core/services/b2/README.md +56 -0
  234. data/core/services/b2/src/backend.rs +4 -4
  235. data/core/services/b2/src/docs.md +7 -8
  236. data/core/services/b2/src/lib.rs +9 -3
  237. data/core/services/cacache/Cargo.toml +2 -1
  238. data/core/services/cacache/LICENSE +201 -0
  239. data/core/services/cacache/NOTICE +5 -0
  240. data/core/services/cacache/README.md +56 -0
  241. data/core/services/cacache/src/backend.rs +0 -1
  242. data/core/services/cacache/src/docs.md +7 -4
  243. data/core/services/cacache/src/lib.rs +9 -4
  244. data/core/services/cloudflare-kv/Cargo.toml +2 -1
  245. data/core/services/cloudflare-kv/LICENSE +201 -0
  246. data/core/services/cloudflare-kv/NOTICE +5 -0
  247. data/core/services/cloudflare-kv/README.md +56 -0
  248. data/core/services/cloudflare-kv/src/backend.rs +0 -2
  249. data/core/services/cloudflare-kv/src/docs.md +7 -5
  250. data/core/services/cloudflare-kv/src/lib.rs +9 -3
  251. data/core/services/compfs/Cargo.toml +2 -1
  252. data/core/services/compfs/LICENSE +201 -0
  253. data/core/services/compfs/NOTICE +5 -0
  254. data/core/services/compfs/README.md +58 -0
  255. data/core/services/compfs/src/lib.rs +9 -3
  256. data/core/services/cos/Cargo.toml +5 -4
  257. data/core/services/cos/LICENSE +201 -0
  258. data/core/services/cos/NOTICE +5 -0
  259. data/core/services/cos/README.md +56 -0
  260. data/core/services/cos/src/backend.rs +4 -4
  261. data/core/services/cos/src/docs.md +7 -9
  262. data/core/services/cos/src/lib.rs +12 -2
  263. data/core/services/d1/Cargo.toml +2 -1
  264. data/core/services/d1/LICENSE +201 -0
  265. data/core/services/d1/NOTICE +5 -0
  266. data/core/services/d1/README.md +56 -0
  267. data/core/services/d1/src/docs.md +7 -8
  268. data/core/services/d1/src/lib.rs +9 -3
  269. data/core/services/dashmap/Cargo.toml +2 -1
  270. data/core/services/dashmap/LICENSE +201 -0
  271. data/core/services/dashmap/NOTICE +5 -0
  272. data/core/services/dashmap/README.md +56 -0
  273. data/core/services/dashmap/src/backend.rs +1 -2
  274. data/core/services/dashmap/src/docs.md +7 -4
  275. data/core/services/dashmap/src/lib.rs +9 -4
  276. data/core/services/dbfs/Cargo.toml +2 -1
  277. data/core/services/dbfs/LICENSE +201 -0
  278. data/core/services/dbfs/NOTICE +5 -0
  279. data/core/services/dbfs/README.md +56 -0
  280. data/core/services/dbfs/src/backend.rs +2 -2
  281. data/core/services/dbfs/src/core.rs +1 -1
  282. data/core/services/dbfs/src/docs.md +7 -6
  283. data/core/services/dbfs/src/lib.rs +9 -4
  284. data/core/services/dbfs/src/lister.rs +1 -1
  285. data/core/services/dropbox/Cargo.toml +2 -1
  286. data/core/services/dropbox/LICENSE +201 -0
  287. data/core/services/dropbox/NOTICE +5 -0
  288. data/core/services/dropbox/README.md +56 -0
  289. data/core/services/dropbox/src/docs.md +7 -4
  290. data/core/services/dropbox/src/lib.rs +9 -4
  291. data/core/services/etcd/Cargo.toml +2 -1
  292. data/core/services/etcd/LICENSE +201 -0
  293. data/core/services/etcd/NOTICE +5 -0
  294. data/core/services/etcd/README.md +56 -0
  295. data/core/services/etcd/src/docs.md +7 -10
  296. data/core/services/etcd/src/lib.rs +9 -4
  297. data/core/services/foundationdb/Cargo.toml +2 -1
  298. data/core/services/foundationdb/LICENSE +201 -0
  299. data/core/services/foundationdb/NOTICE +5 -0
  300. data/core/services/foundationdb/README.md +56 -0
  301. data/core/services/foundationdb/src/docs.md +7 -5
  302. data/core/services/foundationdb/src/lib.rs +9 -4
  303. data/core/services/foyer/Cargo.toml +4 -3
  304. data/core/services/foyer/LICENSE +201 -0
  305. data/core/services/foyer/NOTICE +5 -0
  306. data/core/services/foyer/README.md +57 -0
  307. data/core/services/foyer/src/backend.rs +1 -1
  308. data/core/services/foyer/src/docs.md +12 -1
  309. data/core/services/foyer/src/lib.rs +9 -11
  310. data/core/services/fs/Cargo.toml +2 -1
  311. data/core/services/fs/LICENSE +201 -0
  312. data/core/services/fs/NOTICE +5 -0
  313. data/core/services/fs/README.md +56 -0
  314. data/core/services/fs/src/backend.rs +1 -1
  315. data/core/services/fs/src/docs.md +7 -5
  316. data/core/services/fs/src/lib.rs +9 -3
  317. data/core/services/ftp/Cargo.toml +2 -1
  318. data/core/services/ftp/LICENSE +201 -0
  319. data/core/services/ftp/NOTICE +5 -0
  320. data/core/services/ftp/README.md +56 -0
  321. data/core/services/ftp/src/backend.rs +1 -1
  322. data/core/services/ftp/src/docs.md +7 -7
  323. data/core/services/ftp/src/lib.rs +12 -2
  324. data/core/services/ftp/src/lister.rs +1 -1
  325. data/core/services/gcs/Cargo.toml +5 -4
  326. data/core/services/gcs/LICENSE +201 -0
  327. data/core/services/gcs/NOTICE +5 -0
  328. data/core/services/gcs/README.md +56 -0
  329. data/core/services/gcs/src/core.rs +55 -1
  330. data/core/services/gcs/src/docs.md +7 -13
  331. data/core/services/gcs/src/lib.rs +9 -3
  332. data/core/services/gcs/src/writer.rs +5 -12
  333. data/core/services/gdrive/Cargo.toml +2 -1
  334. data/core/services/gdrive/LICENSE +201 -0
  335. data/core/services/gdrive/NOTICE +5 -0
  336. data/core/services/gdrive/README.md +56 -0
  337. data/core/services/gdrive/src/docs.md +8 -5
  338. data/core/services/gdrive/src/lib.rs +12 -2
  339. data/core/services/gdrive/src/lister.rs +6 -6
  340. data/core/services/ghac/Cargo.toml +5 -4
  341. data/core/services/ghac/LICENSE +201 -0
  342. data/core/services/ghac/NOTICE +5 -0
  343. data/core/services/ghac/README.md +56 -0
  344. data/core/services/ghac/src/docs.md +7 -4
  345. data/core/services/ghac/src/lib.rs +12 -2
  346. data/core/services/github/Cargo.toml +2 -1
  347. data/core/services/github/LICENSE +201 -0
  348. data/core/services/github/NOTICE +5 -0
  349. data/core/services/github/README.md +56 -0
  350. data/core/services/github/src/backend.rs +4 -4
  351. data/core/services/github/src/docs.md +7 -8
  352. data/core/services/github/src/lib.rs +12 -2
  353. data/core/services/goosefs/Cargo.toml +4 -3
  354. data/core/services/goosefs/LICENSE +201 -0
  355. data/core/services/goosefs/NOTICE +5 -0
  356. data/core/services/goosefs/README.md +56 -0
  357. data/core/services/goosefs/src/backend.rs +31 -12
  358. data/core/services/goosefs/src/config.rs +1 -1
  359. data/core/services/goosefs/src/core.rs +72 -25
  360. data/core/services/goosefs/src/docs.md +10 -10
  361. data/core/services/goosefs/src/lib.rs +12 -2
  362. data/core/services/goosefs/src/writer.rs +24 -20
  363. data/core/services/goosefs/tests/safe_conditional_put.rs +199 -0
  364. data/core/services/gridfs/Cargo.toml +2 -1
  365. data/core/services/gridfs/LICENSE +201 -0
  366. data/core/services/gridfs/NOTICE +5 -0
  367. data/core/services/gridfs/README.md +56 -0
  368. data/core/services/gridfs/src/docs.md +7 -6
  369. data/core/services/gridfs/src/lib.rs +9 -4
  370. data/core/services/hdfs/Cargo.toml +2 -1
  371. data/core/services/hdfs/LICENSE +201 -0
  372. data/core/services/hdfs/NOTICE +5 -0
  373. data/core/services/hdfs/README.md +58 -0
  374. data/core/services/hdfs/src/backend.rs +1 -1
  375. data/core/services/hdfs/src/docs.md +9 -9
  376. data/core/services/hdfs/src/lib.rs +12 -2
  377. data/core/services/hdfs-native/Cargo.toml +3 -2
  378. data/core/services/hdfs-native/LICENSE +201 -0
  379. data/core/services/hdfs-native/NOTICE +5 -0
  380. data/core/services/hdfs-native/README.md +56 -0
  381. data/core/services/hdfs-native/src/backend.rs +3 -2
  382. data/core/services/hdfs-native/src/docs.md +7 -4
  383. data/core/services/hdfs-native/src/lib.rs +12 -2
  384. data/core/services/hdfs-native/src/writer.rs +1 -1
  385. data/core/services/hf/Cargo.toml +3 -2
  386. data/core/services/hf/LICENSE +201 -0
  387. data/core/services/hf/NOTICE +5 -0
  388. data/core/services/hf/README.md +56 -0
  389. data/core/services/hf/src/backend.rs +11 -9
  390. data/core/services/hf/src/config.rs +1 -1
  391. data/core/services/hf/src/core.rs +12 -12
  392. data/core/services/hf/src/docs.md +11 -12
  393. data/core/services/hf/src/lib.rs +13 -3
  394. data/core/services/hf/src/lister.rs +1 -1
  395. data/core/services/http/Cargo.toml +4 -3
  396. data/core/services/http/LICENSE +201 -0
  397. data/core/services/http/NOTICE +5 -0
  398. data/core/services/http/README.md +56 -0
  399. data/core/services/http/src/backend.rs +1 -1
  400. data/core/services/http/src/docs.md +7 -5
  401. data/core/services/http/src/lib.rs +10 -4
  402. data/core/services/ipfs/Cargo.toml +2 -1
  403. data/core/services/ipfs/LICENSE +201 -0
  404. data/core/services/ipfs/NOTICE +5 -0
  405. data/core/services/ipfs/README.md +56 -0
  406. data/core/services/ipfs/src/backend.rs +2 -2
  407. data/core/services/ipfs/src/docs.md +7 -5
  408. data/core/services/ipfs/src/lib.rs +9 -3
  409. data/core/services/ipmfs/Cargo.toml +2 -1
  410. data/core/services/ipmfs/LICENSE +201 -0
  411. data/core/services/ipmfs/NOTICE +5 -0
  412. data/core/services/ipmfs/README.md +56 -0
  413. data/core/services/ipmfs/src/docs.md +10 -1
  414. data/core/services/ipmfs/src/lib.rs +12 -2
  415. data/core/services/ipmfs/src/lister.rs +2 -2
  416. data/core/services/koofr/Cargo.toml +2 -1
  417. data/core/services/koofr/LICENSE +201 -0
  418. data/core/services/koofr/NOTICE +5 -0
  419. data/core/services/koofr/README.md +56 -0
  420. data/core/services/koofr/src/backend.rs +4 -4
  421. data/core/services/koofr/src/docs.md +7 -7
  422. data/core/services/koofr/src/lib.rs +12 -2
  423. data/core/services/lakefs/Cargo.toml +2 -1
  424. data/core/services/lakefs/LICENSE +201 -0
  425. data/core/services/lakefs/NOTICE +5 -0
  426. data/core/services/lakefs/README.md +56 -0
  427. data/core/services/lakefs/src/backend.rs +5 -5
  428. data/core/services/lakefs/src/docs.md +7 -9
  429. data/core/services/lakefs/src/lib.rs +9 -4
  430. data/core/services/lakefs/src/lister.rs +1 -1
  431. data/core/services/memcached/Cargo.toml +3 -2
  432. data/core/services/memcached/LICENSE +201 -0
  433. data/core/services/memcached/NOTICE +5 -0
  434. data/core/services/memcached/README.md +56 -0
  435. data/core/services/memcached/src/docs.md +7 -8
  436. data/core/services/memcached/src/lib.rs +9 -4
  437. data/core/services/mini_moka/Cargo.toml +2 -1
  438. data/core/services/mini_moka/LICENSE +201 -0
  439. data/core/services/mini_moka/NOTICE +5 -0
  440. data/core/services/mini_moka/README.md +56 -0
  441. data/core/services/mini_moka/src/backend.rs +1 -1
  442. data/core/services/mini_moka/src/docs.md +10 -1
  443. data/core/services/mini_moka/src/lib.rs +9 -4
  444. data/core/services/moka/Cargo.toml +2 -1
  445. data/core/services/moka/LICENSE +201 -0
  446. data/core/services/moka/NOTICE +5 -0
  447. data/core/services/moka/README.md +56 -0
  448. data/core/services/moka/src/backend.rs +1 -2
  449. data/core/services/moka/src/docs.md +7 -7
  450. data/core/services/moka/src/lib.rs +9 -3
  451. data/core/services/mongodb/Cargo.toml +2 -1
  452. data/core/services/mongodb/LICENSE +201 -0
  453. data/core/services/mongodb/NOTICE +5 -0
  454. data/core/services/mongodb/README.md +56 -0
  455. data/core/services/mongodb/src/docs.md +7 -7
  456. data/core/services/mongodb/src/lib.rs +12 -2
  457. data/core/services/monoiofs/Cargo.toml +2 -1
  458. data/core/services/monoiofs/LICENSE +201 -0
  459. data/core/services/monoiofs/NOTICE +5 -0
  460. data/core/services/monoiofs/README.md +58 -0
  461. data/core/services/monoiofs/src/docs.md +7 -4
  462. data/core/services/monoiofs/src/lib.rs +9 -4
  463. data/core/services/mysql/Cargo.toml +2 -1
  464. data/core/services/mysql/LICENSE +201 -0
  465. data/core/services/mysql/NOTICE +5 -0
  466. data/core/services/mysql/README.md +56 -0
  467. data/core/services/mysql/src/docs.md +7 -6
  468. data/core/services/mysql/src/lib.rs +12 -2
  469. data/core/services/obs/Cargo.toml +5 -4
  470. data/core/services/obs/LICENSE +201 -0
  471. data/core/services/obs/NOTICE +5 -0
  472. data/core/services/obs/README.md +56 -0
  473. data/core/services/obs/src/backend.rs +4 -4
  474. data/core/services/obs/src/docs.md +7 -9
  475. data/core/services/obs/src/lib.rs +12 -2
  476. data/core/services/onedrive/Cargo.toml +2 -1
  477. data/core/services/onedrive/LICENSE +201 -0
  478. data/core/services/onedrive/NOTICE +5 -0
  479. data/core/services/onedrive/README.md +56 -0
  480. data/core/services/onedrive/src/docs.md +10 -10
  481. data/core/services/onedrive/src/lib.rs +9 -3
  482. data/core/services/opfs/Cargo.toml +4 -1
  483. data/core/services/opfs/LICENSE +201 -0
  484. data/core/services/opfs/NOTICE +5 -0
  485. data/core/services/opfs/README.md +63 -0
  486. data/core/services/opfs/src/core.rs +2 -0
  487. data/core/services/opfs/src/docs.md +7 -1
  488. data/core/services/opfs/src/lib.rs +11 -2
  489. data/core/services/oss/Cargo.toml +5 -4
  490. data/core/services/oss/LICENSE +201 -0
  491. data/core/services/oss/NOTICE +5 -0
  492. data/core/services/oss/README.md +56 -0
  493. data/core/services/oss/src/backend.rs +4 -4
  494. data/core/services/oss/src/docs.md +10 -22
  495. data/core/services/oss/src/lib.rs +9 -3
  496. data/core/services/pcloud/Cargo.toml +2 -1
  497. data/core/services/pcloud/LICENSE +201 -0
  498. data/core/services/pcloud/NOTICE +5 -0
  499. data/core/services/pcloud/README.md +56 -0
  500. data/core/services/pcloud/src/backend.rs +3 -3
  501. data/core/services/pcloud/src/docs.md +7 -7
  502. data/core/services/pcloud/src/lib.rs +9 -3
  503. data/core/services/persy/Cargo.toml +2 -1
  504. data/core/services/persy/LICENSE +201 -0
  505. data/core/services/persy/NOTICE +5 -0
  506. data/core/services/persy/README.md +56 -0
  507. data/core/services/persy/src/backend.rs +0 -1
  508. data/core/services/persy/src/docs.md +7 -6
  509. data/core/services/persy/src/lib.rs +9 -3
  510. data/core/services/postgresql/Cargo.toml +2 -1
  511. data/core/services/postgresql/LICENSE +201 -0
  512. data/core/services/postgresql/NOTICE +5 -0
  513. data/core/services/postgresql/README.md +56 -0
  514. data/core/services/postgresql/src/docs.md +7 -6
  515. data/core/services/postgresql/src/lib.rs +12 -2
  516. data/core/services/redb/Cargo.toml +2 -1
  517. data/core/services/redb/LICENSE +201 -0
  518. data/core/services/redb/NOTICE +5 -0
  519. data/core/services/redb/README.md +56 -0
  520. data/core/services/redb/src/backend.rs +0 -1
  521. data/core/services/redb/src/docs.md +7 -5
  522. data/core/services/redb/src/lib.rs +9 -3
  523. data/core/services/redis/Cargo.toml +2 -1
  524. data/core/services/redis/LICENSE +201 -0
  525. data/core/services/redis/NOTICE +5 -0
  526. data/core/services/redis/README.md +56 -0
  527. data/core/services/redis/src/docs.md +7 -9
  528. data/core/services/redis/src/lib.rs +9 -4
  529. data/core/services/rocksdb/Cargo.toml +2 -1
  530. data/core/services/rocksdb/LICENSE +201 -0
  531. data/core/services/rocksdb/NOTICE +5 -0
  532. data/core/services/rocksdb/README.md +56 -0
  533. data/core/services/rocksdb/src/backend.rs +0 -1
  534. data/core/services/rocksdb/src/docs.md +7 -5
  535. data/core/services/rocksdb/src/lib.rs +12 -2
  536. data/core/services/s3/Cargo.toml +5 -4
  537. data/core/services/s3/LICENSE +201 -0
  538. data/core/services/s3/NOTICE +5 -0
  539. data/core/services/s3/README.md +56 -0
  540. data/core/services/s3/src/backend.rs +60 -7
  541. data/core/services/s3/src/compatible_services.md +10 -2
  542. data/core/services/s3/src/core.rs +16 -8
  543. data/core/services/s3/src/docs.md +7 -28
  544. data/core/services/s3/src/lib.rs +9 -3
  545. data/core/services/seafile/Cargo.toml +2 -1
  546. data/core/services/seafile/LICENSE +201 -0
  547. data/core/services/seafile/NOTICE +5 -0
  548. data/core/services/seafile/README.md +56 -0
  549. data/core/services/seafile/src/backend.rs +3 -3
  550. data/core/services/seafile/src/docs.md +7 -8
  551. data/core/services/seafile/src/lib.rs +12 -2
  552. data/core/services/sftp/Cargo.toml +2 -1
  553. data/core/services/sftp/LICENSE +201 -0
  554. data/core/services/sftp/NOTICE +5 -0
  555. data/core/services/sftp/README.md +56 -0
  556. data/core/services/sftp/src/backend.rs +2 -2
  557. data/core/services/sftp/src/docs.md +7 -9
  558. data/core/services/sftp/src/lib.rs +9 -4
  559. data/core/services/sled/Cargo.toml +2 -1
  560. data/core/services/sled/LICENSE +201 -0
  561. data/core/services/sled/NOTICE +5 -0
  562. data/core/services/sled/README.md +56 -0
  563. data/core/services/sled/src/backend.rs +0 -1
  564. data/core/services/sled/src/docs.md +7 -4
  565. data/core/services/sled/src/lib.rs +12 -2
  566. data/core/services/sqlite/Cargo.toml +2 -1
  567. data/core/services/sqlite/LICENSE +201 -0
  568. data/core/services/sqlite/NOTICE +5 -0
  569. data/core/services/sqlite/README.md +56 -0
  570. data/core/services/sqlite/src/backend.rs +0 -1
  571. data/core/services/sqlite/src/docs.md +7 -6
  572. data/core/services/sqlite/src/lib.rs +12 -2
  573. data/core/services/surrealdb/Cargo.toml +2 -1
  574. data/core/services/surrealdb/LICENSE +201 -0
  575. data/core/services/surrealdb/NOTICE +5 -0
  576. data/core/services/surrealdb/README.md +56 -0
  577. data/core/services/surrealdb/src/docs.md +8 -10
  578. data/core/services/surrealdb/src/lib.rs +9 -3
  579. data/core/services/swift/Cargo.toml +2 -1
  580. data/core/services/swift/LICENSE +201 -0
  581. data/core/services/swift/NOTICE +5 -0
  582. data/core/services/swift/README.md +56 -0
  583. data/core/services/swift/src/backend.rs +2 -2
  584. data/core/services/swift/src/core.rs +24 -24
  585. data/core/services/swift/src/deleter.rs +1 -1
  586. data/core/services/swift/src/docs.md +7 -6
  587. data/core/services/swift/src/lib.rs +9 -4
  588. data/core/services/swift/src/writer.rs +1 -1
  589. data/core/services/tikv/Cargo.toml +2 -1
  590. data/core/services/tikv/LICENSE +201 -0
  591. data/core/services/tikv/NOTICE +5 -0
  592. data/core/services/tikv/README.md +56 -0
  593. data/core/services/tikv/src/backend.rs +1 -1
  594. data/core/services/tikv/src/docs.md +7 -8
  595. data/core/services/tikv/src/lib.rs +12 -2
  596. data/core/services/tos/Cargo.toml +5 -4
  597. data/core/services/tos/LICENSE +201 -0
  598. data/core/services/tos/NOTICE +5 -0
  599. data/core/services/tos/README.md +56 -0
  600. data/core/services/tos/src/docs.md +7 -10
  601. data/core/services/tos/src/lib.rs +9 -3
  602. data/core/services/upyun/Cargo.toml +2 -1
  603. data/core/services/upyun/LICENSE +201 -0
  604. data/core/services/upyun/NOTICE +5 -0
  605. data/core/services/upyun/README.md +56 -0
  606. data/core/services/upyun/src/backend.rs +3 -3
  607. data/core/services/upyun/src/docs.md +7 -7
  608. data/core/services/upyun/src/lib.rs +9 -4
  609. data/core/services/vercel-artifacts/Cargo.toml +2 -1
  610. data/core/services/vercel-artifacts/LICENSE +201 -0
  611. data/core/services/vercel-artifacts/NOTICE +5 -0
  612. data/core/services/vercel-artifacts/README.md +56 -0
  613. data/core/services/vercel-artifacts/src/docs.md +7 -7
  614. data/core/services/vercel-artifacts/src/lib.rs +11 -3
  615. data/core/services/vercel-blob/Cargo.toml +2 -1
  616. data/core/services/vercel-blob/LICENSE +201 -0
  617. data/core/services/vercel-blob/NOTICE +5 -0
  618. data/core/services/vercel-blob/README.md +56 -0
  619. data/core/services/vercel-blob/src/backend.rs +2 -2
  620. data/core/services/vercel-blob/src/docs.md +7 -5
  621. data/core/services/vercel-blob/src/lib.rs +12 -2
  622. data/core/services/webdav/Cargo.toml +2 -1
  623. data/core/services/webdav/LICENSE +201 -0
  624. data/core/services/webdav/NOTICE +5 -0
  625. data/core/services/webdav/README.md +56 -0
  626. data/core/services/webdav/src/backend.rs +1 -1
  627. data/core/services/webdav/src/docs.md +7 -7
  628. data/core/services/webdav/src/lib.rs +12 -2
  629. data/core/services/webhdfs/Cargo.toml +2 -1
  630. data/core/services/webhdfs/LICENSE +201 -0
  631. data/core/services/webhdfs/NOTICE +5 -0
  632. data/core/services/webhdfs/README.md +56 -0
  633. data/core/services/webhdfs/src/docs.md +11 -9
  634. data/core/services/webhdfs/src/lib.rs +12 -2
  635. data/core/services/yandex-disk/Cargo.toml +2 -1
  636. data/core/services/yandex-disk/LICENSE +201 -0
  637. data/core/services/yandex-disk/NOTICE +5 -0
  638. data/core/services/yandex-disk/README.md +56 -0
  639. data/core/services/yandex-disk/src/backend.rs +2 -2
  640. data/core/services/yandex-disk/src/docs.md +7 -5
  641. data/core/services/yandex-disk/src/lib.rs +9 -3
  642. data/core/src/lib.rs +30 -4
  643. data/core/testkit/Cargo.toml +5 -4
  644. data/core/testkit/LICENSE +201 -0
  645. data/core/testkit/NOTICE +5 -0
  646. data/core/testkit/README.md +25 -0
  647. data/core/testkit/src/lib.rs +4 -2
  648. data/core/testkit/src/read.rs +12 -13
  649. data/core/testkit/src/write.rs +12 -13
  650. data/core/tests/behavior/async_list.rs +2 -2
  651. data/core/tests/behavior/async_presign.rs +4 -4
  652. data/core/tests/behavior/async_stat.rs +1 -1
  653. data/core/tests/behavior/async_write.rs +1 -1
  654. data/core/users.md +2 -0
  655. data/opendal.gemspec +5 -1
  656. metadata +283 -2
data/core/core/src/lib.rs CHANGED
@@ -18,142 +18,9 @@
18
18
  #![doc(
19
19
  html_logo_url = "https://raw.githubusercontent.com/apache/opendal/main/website/static/img/logo.svg"
20
20
  )]
21
+ #![doc = include_str!("../README.md")]
21
22
  #![cfg_attr(docsrs, feature(doc_cfg))]
22
- //! Apache OpenDAL™ is an Open Data Access Layer that enables seamless interaction with diverse storage services.
23
- //!
24
- //! OpenDAL's development is guided by its vision of **One Layer, All Storage** and its core principles: **Open Community**, **Solid Foundation**, **Fast Access**, **Object Storage First**, and **Extensible Architecture**. Read the explained vision at [OpenDAL Vision](https://opendal.apache.org/vision).
25
- //!
26
- //! # Quick Start
27
- //!
28
- //! OpenDAL's API entry points are [`Operator`] and [`blocking::Operator`]. All
29
- //! public APIs are accessible through the operator. To utilize OpenDAL, you
30
- //! need to:
31
- //!
32
- //! - [Init a service](#init-a-service)
33
- //! - [Compose layers](#compose-layers)
34
- //! - [Use operator](#use-operator)
35
- //!
36
- //! ## Init a service
37
- //!
38
- //! The first step is to pick a service and init it with a builder. All supported
39
- //! services could be found at [`services`].
40
- //!
41
- //! Let's take [`services::Memory`] as an example:
42
- //!
43
- //! ```no_run
44
- //! use opendal_core::services;
45
- //! use opendal_core::Operator;
46
- //! use opendal_core::Result;
47
- //!
48
- //! fn main() -> Result<()> {
49
- //! // Pick a builder and configure it.
50
- //! let builder = services::Memory::default();
51
- //!
52
- //! // Init an operator
53
- //! let op = Operator::new(builder)?;
54
- //! Ok(())
55
- //! }
56
- //! ```
57
- //!
58
- //! ## Compose layers
59
- //!
60
- //! The next setup is to compose layers. Layers are modules that provide extra
61
- //! features for every operation. All builtin layers could be found at [`layers`].
62
- //!
63
- //! Let's use [`layers::CapabilityOverrideLayer`] and a custom [`HttpTransporter`] as an example.
64
- //!
65
- //! ```no_run
66
- //! use opendal_core::layers::CapabilityOverrideLayer;
67
- //! use opendal_core::HttpTransporter;
68
- //! use opendal_core::OperationContext;
69
- //! use opendal_core::services;
70
- //! use opendal_core::Operator;
71
- //! use opendal_core::Result;
72
- //!
73
- //! #[tokio::main]
74
- //! async fn main() -> Result<()> {
75
- //! // Pick a builder and configure it.
76
- //! let builder = services::Memory::default();
77
- //!
78
- //! // Init an operator
79
- //! let transport = HttpTransporter::default();
80
- //! let op = Operator::new(builder)?
81
- //! // Replace the base HTTP transport.
82
- //! .with_context(OperationContext::new().with_http_transport(transport))
83
- //! .layer(CapabilityOverrideLayer::new(|cap| cap));
84
- //!
85
- //! Ok(())
86
- //! }
87
- //! ```
88
- //!
89
- //! ## Use operator
90
- //!
91
- //! The final step is to use the operator. OpenDAL supports both async [`Operator`]
92
- //! and blocking [`blocking::Operator`]. Please pick the one that fits your use case.
93
- //!
94
- //! Every Operator API follows a consistent pattern. For example, consider the `read` operation:
95
- //!
96
- //! - [`Operator::read`]: Executes a read operation.
97
- //! - [`Operator::read_with`]: Executes a read operation with additional options using the builder pattern.
98
- //! - [`Operator::read_options`]: Executes a read operation with extra options provided via a [`options::ReadOptions`] struct.
99
- //! - [`Operator::reader`]: Creates a reader for streaming data, allowing for flexible access.
100
- //! - [`Operator::reader_with`]: Creates a reader with advanced options using the builder pattern.
101
- //! - [`Operator::reader_options`]: Creates a reader with extra options provided via a [`options::ReadOptions`] struct.
102
- //!
103
- //! The [`Reader`] created by [`Operator`] supports custom read control methods and can be converted
104
- //! into [`futures::AsyncRead`] or [`futures::Stream`] for broader ecosystem compatibility.
105
- //!
106
- //! ```no_run
107
- //! use opendal_core::options;
108
- //! use opendal_core::HttpTransporter;
109
- //! use opendal_core::OperationContext;
110
- //! use opendal_core::services;
111
- //! use opendal_core::Operator;
112
- //! use opendal_core::Result;
113
- //!
114
- //! #[tokio::main]
115
- //! async fn main() -> Result<()> {
116
- //! // Pick a builder and configure it.
117
- //! let builder = services::Memory::default();
118
- //!
119
- //! // Init an operator
120
- //! let transport = HttpTransporter::default();
121
- //! let op = Operator::new(builder)?
122
- //! // Replace the base HTTP transport.
123
- //! .with_context(OperationContext::new().with_http_transport(transport));
124
- //!
125
- //! // Fetch this file's metadata
126
- //! let meta = op.stat("hello.txt").await?;
127
- //! let length = meta.content_length();
128
- //!
129
- //! // Read data from `hello.txt` with options.
130
- //! let bs = op
131
- //! .read_with("hello.txt")
132
- //! .range(0..8 * 1024 * 1024)
133
- //! .chunk(1024 * 1024)
134
- //! .concurrent(4)
135
- //! .await?;
136
- //!
137
- //! // The same to:
138
- //! let bs = op
139
- //! .read_options("hello.txt", options::ReadOptions {
140
- //! range: (0..8 * 1024 * 1024).into(),
141
- //! chunk: Some(1024 * 1024),
142
- //! concurrent: 4,
143
- //! ..Default::default()
144
- //! })
145
- //! .await?;
146
- //!
147
- //! Ok(())
148
- //! }
149
- //! ```
150
- //!
151
- //! # Useful Links
152
- //!
153
- //! - [Concept][crate::docs::concepts]
154
- //! - [Internals][crate::docs::internals]
155
- //! - [Performance Guide][crate::docs::performance]
156
-
23
+ #![cfg_attr(docsrs, doc(auto_cfg))]
157
24
  // Make sure all our public APIs have docs.
158
25
  #![deny(missing_docs)]
159
26
 
@@ -164,8 +31,6 @@ pub use types::*;
164
31
  // Public modules, they will be accessed like `opendal::layers::Xxxx`
165
32
  #[cfg(feature = "blocking")]
166
33
  pub mod blocking;
167
- #[cfg(docsrs)]
168
- pub mod docs;
169
34
  pub mod layers;
170
35
  pub mod raw;
171
36
  pub mod services;
@@ -22,10 +22,10 @@ use std::sync::Arc;
22
22
  use crate::raw::*;
23
23
  use crate::*;
24
24
 
25
- /// Immutable identity facts for a storage service.
25
+ /// Immutable identity and configuration for a storage service.
26
26
  ///
27
- /// Runtime resources and composed capabilities are kept outside this value so
28
- /// layers can replace them without mutating shared service identity.
27
+ /// `ServiceInfo` excludes runtime resources and composed capabilities so that
28
+ /// layers can replace them without mutating the shared service identity.
29
29
  #[derive(Clone, PartialEq, Eq, Hash)]
30
30
  pub struct ServiceInfo {
31
31
  scheme: &'static str,
@@ -44,7 +44,7 @@ impl Debug for ServiceInfo {
44
44
  }
45
45
 
46
46
  impl ServiceInfo {
47
- /// Create a new service info value.
47
+ /// Create a new `ServiceInfo`.
48
48
  pub fn new(scheme: &'static str, root: impl AsRef<str>, name: impl AsRef<str>) -> Self {
49
49
  Self {
50
50
  scheme,
@@ -53,12 +53,12 @@ impl ServiceInfo {
53
53
  }
54
54
  }
55
55
 
56
- /// Create a new service info value with only scheme.
56
+ /// Create a new `ServiceInfo` with only scheme.
57
57
  pub fn with_scheme(scheme: &'static str) -> Self {
58
58
  Self::new(scheme, "", "")
59
59
  }
60
60
 
61
- /// Return a copy of this service info with a different root.
61
+ /// Return a copy of this `ServiceInfo` with a different root.
62
62
  pub fn with_root(&self, root: impl AsRef<str>) -> Self {
63
63
  Self {
64
64
  scheme: self.scheme,
@@ -67,17 +67,17 @@ impl ServiceInfo {
67
67
  }
68
68
  }
69
69
 
70
- /// Scheme of backend.
70
+ /// Scheme of the service.
71
71
  pub fn scheme(&self) -> &'static str {
72
72
  self.scheme
73
73
  }
74
74
 
75
- /// Root of backend, will be in format like `/path/to/dir/`.
75
+ /// Root of the service. Follows a format like `/path/to/dir/`.
76
76
  pub fn root(&self) -> Arc<str> {
77
77
  self.root.clone()
78
78
  }
79
79
 
80
- /// Name of backend, could be empty if underlying backend doesn't have namespace concept.
80
+ /// Name of the service. This might be empty if the service has no namespace concept.
81
81
  ///
82
82
  /// For example:
83
83
  ///
@@ -90,18 +90,19 @@ impl ServiceInfo {
90
90
  }
91
91
  }
92
92
 
93
- /// Underlying trait of all storage services.
93
+ /// Foundational trait for storage services.
94
94
  ///
95
- /// Every storage backend supported by OpenDAL implements [`Service`]. Backends
96
- /// must implement every operation so unsupported behavior is explicit at the
97
- /// implementation boundary.
95
+ /// Every storage service (or backend) in OpenDAL implements [`Service`]. Services
96
+ /// and layers must implement every operation in this trait and declare their
97
+ /// capabilities. This allows callers to detect unsupported operations.
98
98
  ///
99
99
  /// # Operations
100
100
  ///
101
- /// - Paths passed into service operations are normalized by the operator.
102
- /// - `/` means the root path.
103
- /// - Paths ending with `/` are directory paths.
104
- /// - Other paths are file paths.
101
+ /// - An operator normalizes paths before passing them to a `Service`. Relative to
102
+ /// the configured `root`:
103
+ /// - `/` represents the root.
104
+ /// - A path ending with `/` represents a directory.
105
+ /// - Any other path represents a file.
105
106
  /// - Services report their supported operation set through [`Service::capability`].
106
107
  /// - The [`OperationContext`] carries layer-composed runtime resources for each
107
108
  /// operation.
@@ -117,13 +118,14 @@ pub trait Service: Send + Sync + Debug + Unpin + 'static {
117
118
  /// Copier returned by `copy`.
118
119
  type Copier: oio::Copy;
119
120
 
120
- /// Return immutable identity facts for this service.
121
+ /// Return the immutable identity and configuration for this service.
121
122
  fn info(&self) -> ServiceInfo;
122
123
 
123
124
  /// Return the capability of this service stack.
124
125
  ///
125
- /// Layers may transform capabilities, so callers should use this value for
126
- /// the current stack instead of assuming the backend's native capability.
126
+ /// Layers may affect a service's capabilities, so callers should use this
127
+ /// value for the current stack instead of assuming the backend's native
128
+ /// capability.
127
129
  fn capability(&self) -> Capability;
128
130
 
129
131
  /// Invoke the `create` operation on the specified path.
@@ -411,7 +413,7 @@ impl<S: Service + ?Sized> ServiceDyn for S {
411
413
  }
412
414
  }
413
415
 
414
- /// Service is used behind a [`Servicer`] everywhere.
416
+ /// Implement `Service` for type-erased services so they use the same API.
415
417
  impl<T: ServiceDyn + ?Sized> Service for Arc<T> {
416
418
  type Reader = oio::Reader;
417
419
  type Writer = oio::Writer;
@@ -24,8 +24,10 @@ use crate::*;
24
24
 
25
25
  /// QueueBuf is a queue of [`Buffer`].
26
26
  ///
27
- /// It's designed to allow storing multiple buffers without copying underlying bytes and consume them
28
- /// in order.
27
+ /// QueueBuf allows:
28
+ ///
29
+ /// - Storing multiple buffers without copying bytes.
30
+ /// - Consuming buffers in order.
29
31
  ///
30
32
  /// QueueBuf mainly provides the following operations:
31
33
  ///
@@ -58,11 +58,12 @@ use crate::*;
58
58
  /// - Block ID is generated by caller `BlockWrite` instead of services.
59
59
  /// - Complete block by an ordered block id list.
60
60
  pub trait BlockWrite: Send + Sync + Unpin + 'static {
61
- /// write_once is used to write the data to underlying storage at once.
61
+ /// `write_once` writes all data to storage in a single operation.
62
62
  ///
63
63
  /// BlockWriter will call this API when:
64
64
  ///
65
- /// - All the data has been written to the buffer and we can perform the upload at once.
65
+ /// - The buffer contains all data, so `BlockWriter` can upload it in one
66
+ /// operation, for example, in a single network request.
66
67
  fn write_once(
67
68
  &self,
68
69
  size: u64,
@@ -18,13 +18,13 @@
18
18
  use std::fmt::Display;
19
19
  use std::fmt::Formatter;
20
20
 
21
- /// Operation is the name of the operation that is being performed.
21
+ /// Identifies the operation being performed.
22
22
  ///
23
- /// Most operations can be mapped to the methods of the `Access` trait,
24
- /// but we modify the names to make them more readable and clear for users.
23
+ /// Most variants map to methods on the `Access` trait, although some names
24
+ /// differ to improve readability.
25
25
  ///
26
- /// The same operation might have different meanings and costs in different
27
- /// storage services.
26
+ /// An operation might have different meanings and costs depending on a
27
+ /// storage service.
28
28
  #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Default)]
29
29
  #[non_exhaustive]
30
30
  pub enum Operation {