|
62 | 62 | //! [ACID]: https://en.wikipedia.org/wiki/ACID |
63 | 63 | //! [S3]: https://aws.amazon.com/s3/ |
64 | 64 | //! |
| 65 | +//! # APIs |
| 66 | +//! |
| 67 | +//! * [`ObjectStore`]: Core object store API |
| 68 | +//! * [`ObjectStoreExt`]: (*New in 0.13.0*) Extension trait with additional convenience methods |
| 69 | +//! |
65 | 70 | //! # Available [`ObjectStore`] Implementations |
66 | 71 | //! |
67 | 72 | //! By default, this crate provides the following implementations: |
@@ -613,18 +618,32 @@ pub type DynObjectStore = dyn ObjectStore; |
613 | 618 | /// Id type for multipart uploads. |
614 | 619 | pub type MultipartId = String; |
615 | 620 |
|
616 | | -/// Universal API to multiple object store services. |
| 621 | +/// Universal API for object store services. |
617 | 622 | /// |
618 | | -/// For more convenience methods, check [`ObjectStoreExt`]. |
| 623 | +/// See the [module-level documentation](crate) for a high level overview and |
| 624 | +/// examples. See [`ObjectStoreExt`] for additional convenience methods. |
619 | 625 | /// |
620 | 626 | /// # Contract |
621 | | -/// This trait is meant as a contract between object store implementations |
622 | | -/// (e.g. providers, wrappers) and the `object_store` crate itself and is |
| 627 | +/// This trait is a contract between object store _implementations_ |
| 628 | +/// (e.g. providers, wrappers) and the `object_store` crate itself. It is |
623 | 629 | /// intended to be the minimum API required for an object store. |
624 | 630 | /// |
625 | | -/// The [`ObjectStoreExt`] acts as an API/contract between `object_store` |
626 | | -/// and the store users and provides additional methods that may be simpler to use but overlap |
627 | | -/// in functionality with [`ObjectStore`]. |
| 631 | +/// The [`ObjectStoreExt`] acts as an API/contract between `object_store` and |
| 632 | +/// the store _users_ and provides additional methods that may be simpler to use |
| 633 | +/// but overlap in functionality with [`ObjectStore`]. |
| 634 | +/// |
| 635 | +/// # Minimal Default Implementations |
| 636 | +/// There are only a few default implementations for methods in this trait by |
| 637 | +/// design. This was different from versions prior to `0.13.0`, which had many |
| 638 | +/// more default implementations. Default implementations are convenient for |
| 639 | +/// users, but error-prone for implementors as they require keeping the |
| 640 | +/// convenience APIs correctly in sync. |
| 641 | +/// |
| 642 | +/// As of version 0.13.0, most methods on [`ObjectStore`] must be implemented, and |
| 643 | +/// the convenience methods have been moved to the [`ObjectStoreExt`] trait as |
| 644 | +/// described above. See [#385] for more details. |
| 645 | +/// |
| 646 | +/// [#385]: https://github.com/apache/arrow-rs-object-store/issues/385 |
628 | 647 | /// |
629 | 648 | /// # Wrappers |
630 | 649 | /// If you wrap an [`ObjectStore`] -- e.g. to add observability -- you SHOULD |
@@ -1136,7 +1155,9 @@ as_ref_impl!(Box<T>); |
1136 | 1155 |
|
1137 | 1156 | /// Extension trait for [`ObjectStore`] with convenience functions. |
1138 | 1157 | /// |
1139 | | -/// See "contract" section within the [`ObjectStore`] documentation for more reasoning. |
| 1158 | +/// See the [module-level documentation](crate) for a high leve overview and |
| 1159 | +/// examples. See "contract" section within the [`ObjectStore`] documentation |
| 1160 | +/// for more reasoning. |
1140 | 1161 | /// |
1141 | 1162 | /// # Implementation |
1142 | 1163 | /// You MUST NOT implement this trait yourself. It is automatically implemented for all [`ObjectStore`] implementations. |
|
0 commit comments