Struct opendal::Capability
source · pub struct Capability {Show 77 fields
pub stat: bool,
pub stat_with_if_match: bool,
pub stat_with_if_none_match: bool,
pub stat_with_if_modified_since: bool,
pub stat_with_if_unmodified_since: bool,
pub stat_with_override_cache_control: bool,
pub stat_with_override_content_disposition: bool,
pub stat_with_override_content_type: bool,
pub stat_with_version: bool,
pub stat_has_cache_control: bool,
pub stat_has_content_disposition: bool,
pub stat_has_content_length: bool,
pub stat_has_content_md5: bool,
pub stat_has_content_range: bool,
pub stat_has_content_type: bool,
pub stat_has_content_encoding: bool,
pub stat_has_etag: bool,
pub stat_has_last_modified: bool,
pub stat_has_version: bool,
pub stat_has_user_metadata: bool,
pub read: bool,
pub read_with_if_match: bool,
pub read_with_if_none_match: bool,
pub read_with_if_modified_since: bool,
pub read_with_if_unmodified_since: bool,
pub read_with_override_cache_control: bool,
pub read_with_override_content_disposition: bool,
pub read_with_override_content_type: bool,
pub read_with_version: bool,
pub write: bool,
pub write_can_multi: bool,
pub write_can_empty: bool,
pub write_can_append: bool,
pub write_with_content_type: bool,
pub write_with_content_disposition: bool,
pub write_with_content_encoding: bool,
pub write_with_cache_control: bool,
pub write_with_if_match: bool,
pub write_with_if_none_match: bool,
pub write_with_if_not_exists: bool,
pub write_with_user_metadata: bool,
pub write_multi_max_size: Option<usize>,
pub write_multi_min_size: Option<usize>,
pub write_total_max_size: Option<usize>,
pub write_has_content_length: bool,
pub write_has_last_modified: bool,
pub write_has_etag: bool,
pub write_has_version: bool,
pub create_dir: bool,
pub delete: bool,
pub delete_with_version: bool,
pub delete_max_size: Option<usize>,
pub copy: bool,
pub rename: bool,
pub list: bool,
pub list_with_limit: bool,
pub list_with_start_after: bool,
pub list_with_recursive: bool,
pub list_with_version: bool,
pub list_with_versions: bool,
pub list_with_deleted: bool,
pub list_has_cache_control: bool,
pub list_has_content_disposition: bool,
pub list_has_content_length: bool,
pub list_has_content_md5: bool,
pub list_has_content_range: bool,
pub list_has_content_type: bool,
pub list_has_etag: bool,
pub list_has_last_modified: bool,
pub list_has_version: bool,
pub list_has_user_metadata: bool,
pub presign: bool,
pub presign_read: bool,
pub presign_stat: bool,
pub presign_write: bool,
pub shared: bool,
pub blocking: bool,
}
Expand description
Capability defines the supported operations and their constraints for a storage Operator.
§Overview
This structure provides a comprehensive description of an Operator’s capabilities, including:
- Basic operations support (read, write, delete, etc.)
- Advanced operation variants (conditional operations, metadata handling)
- Operational constraints (size limits, batch limitations)
§Capability Types
Every operator maintains two capability sets:
-
OperatorInfo::native_capability
: Represents operations natively supported by the storage backend. -
OperatorInfo::full_capability
: Represents all available operations, including those implemented through alternative mechanisms.
§Implementation Details
Some operations might be available even when not natively supported by the backend. For example:
- Blocking operations are provided through the BlockingLayer
Developers should:
- Use
full_capability
to determine available operations - Use
native_capability
to identify optimized operations
§Field Naming Conventions
Fields follow these naming patterns:
- Basic operations: Simple lowercase (e.g.,
read
,write
) - Compound operations: Underscore-separated (e.g.,
presign_read
) - Variants: Capability description (e.g.,
write_can_empty
) - Parameterized operations: With-style (e.g.,
read_with_if_match
) - Limitations: Constraint description (e.g.,
write_multi_max_size
) - Metadata Results: Returning metadata capabilities (e.g.,
stat_has_content_length
)
All capability fields are public and can be accessed directly.
Fields§
§stat: bool
Indicates if the operator supports metadata retrieval operations.
stat_with_if_match: bool
Indicates if conditional stat operations using If-Match are supported.
stat_with_if_none_match: bool
Indicates if conditional stat operations using If-None-Match are supported.
stat_with_if_modified_since: bool
Indicates if conditional stat operations using If-Modified-Since are supported.
stat_with_if_unmodified_since: bool
Indicates if conditional stat operations using If-Unmodified-Since are supported.
stat_with_override_cache_control: bool
Indicates if Cache-Control header override is supported during stat operations.
stat_with_override_content_disposition: bool
Indicates if Content-Disposition header override is supported during stat operations.
stat_with_override_content_type: bool
Indicates if Content-Type header override is supported during stat operations.
stat_with_version: bool
Indicates if versions stat operations are supported.
stat_has_cache_control: bool
Indicates whether cache control information is available in stat response
stat_has_content_disposition: bool
Indicates whether content disposition information is available in stat response
stat_has_content_length: bool
Indicates whether content length information is available in stat response
stat_has_content_md5: bool
Indicates whether content MD5 checksum is available in stat response
stat_has_content_range: bool
Indicates whether content range information is available in stat response
stat_has_content_type: bool
Indicates whether content type information is available in stat response
stat_has_content_encoding: bool
Indicates whether content encoding information is available in stat response
stat_has_etag: bool
Indicates whether entity tag is available in stat response
stat_has_last_modified: bool
Indicates whether last modified timestamp is available in stat response
stat_has_version: bool
Indicates whether version information is available in stat response
stat_has_user_metadata: bool
Indicates whether user-defined metadata is available in stat response
read: bool
Indicates if the operator supports read operations.
read_with_if_match: bool
Indicates if conditional read operations using If-Match are supported.
read_with_if_none_match: bool
Indicates if conditional read operations using If-None-Match are supported.
read_with_if_modified_since: bool
Indicates if conditional read operations using If-Modified-Since are supported.
read_with_if_unmodified_since: bool
Indicates if conditional read operations using If-Unmodified-Since are supported.
read_with_override_cache_control: bool
Indicates if Cache-Control header override is supported during read operations.
read_with_override_content_disposition: bool
Indicates if Content-Disposition header override is supported during read operations.
read_with_override_content_type: bool
Indicates if Content-Type header override is supported during read operations.
read_with_version: bool
Indicates if versions read operations are supported.
write: bool
Indicates if the operator supports write operations.
write_can_multi: bool
Indicates if multiple write operations can be performed on the same object.
write_can_empty: bool
Indicates if writing empty content is supported.
write_can_append: bool
Indicates if append operations are supported.
write_with_content_type: bool
Indicates if Content-Type can be specified during write operations.
write_with_content_disposition: bool
Indicates if Content-Disposition can be specified during write operations.
write_with_content_encoding: bool
Indicates if Content-Encoding can be specified during write operations.
write_with_cache_control: bool
Indicates if Cache-Control can be specified during write operations.
write_with_if_match: bool
Indicates if conditional write operations using If-Match are supported.
write_with_if_none_match: bool
Indicates if conditional write operations using If-None-Match are supported.
write_with_if_not_exists: bool
Indicates if write operations can be conditional on object non-existence.
write_with_user_metadata: bool
Indicates if custom user metadata can be attached during write operations.
write_multi_max_size: Option<usize>
Maximum size supported for multipart uploads. For example, AWS S3 supports up to 5GiB per part in multipart uploads.
write_multi_min_size: Option<usize>
Minimum size required for multipart uploads (except for the last part). For example, AWS S3 requires at least 5MiB per part.
write_total_max_size: Option<usize>
Maximum total size supported for write operations. For example, Cloudflare D1 has a 1MB total size limit.
write_has_content_length: bool
Indicates whether content length information is available in write response.
by default, it should be true
for all write operations.
write_has_last_modified: bool
Indicates whether last modified timestamp is available in write response
write_has_etag: bool
Indicates whether entity tag is available in write response
write_has_version: bool
Indicates whether version information is available in write response
create_dir: bool
Indicates if directory creation is supported.
delete: bool
Indicates if delete operations are supported.
delete_with_version: bool
Indicates if versions delete operations are supported.
delete_max_size: Option<usize>
Maximum size supported for single delete operations.
copy: bool
Indicates if copy operations are supported.
rename: bool
Indicates if rename operations are supported.
list: bool
Indicates if list operations are supported.
list_with_limit: bool
Indicates if list operations support result limiting.
list_with_start_after: bool
Indicates if list operations support continuation from a specific point.
list_with_recursive: bool
Indicates if recursive listing is supported.
list_with_version: bool
Indicates if versions listing is supported.
list_with_versions: bool
Indicates if listing with versions included is supported.
list_with_deleted: bool
Indicates if listing with deleted files included is supported.
list_has_cache_control: bool
Indicates whether cache control information is available in list response
list_has_content_disposition: bool
Indicates whether content disposition information is available in list response
list_has_content_length: bool
Indicates whether content length information is available in list response
list_has_content_md5: bool
Indicates whether content MD5 checksum is available in list response
list_has_content_range: bool
Indicates whether content range information is available in list response
list_has_content_type: bool
Indicates whether content type information is available in list response
list_has_etag: bool
Indicates whether entity tag is available in list response
list_has_last_modified: bool
Indicates whether last modified timestamp is available in list response
list_has_version: bool
Indicates whether version information is available in list response
list_has_user_metadata: bool
Indicates whether user-defined metadata is available in list response
presign: bool
Indicates if presigned URL generation is supported.
presign_read: bool
Indicates if presigned URLs for read operations are supported.
presign_stat: bool
Indicates if presigned URLs for stat operations are supported.
presign_write: bool
Indicates if presigned URLs for write operations are supported.
Indicate if the operator supports shared access.
blocking: bool
Indicates if blocking operations are supported.
Trait Implementations§
source§impl Clone for Capability
impl Clone for Capability
source§fn clone(&self) -> Capability
fn clone(&self) -> Capability
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for Capability
impl Debug for Capability
source§impl Default for Capability
impl Default for Capability
source§fn default() -> Capability
fn default() -> Capability
impl Copy for Capability
Auto Trait Implementations§
impl Freeze for Capability
impl RefUnwindSafe for Capability
impl Send for Capability
impl Sync for Capability
impl Unpin for Capability
impl UnwindSafe for Capability
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CompatExt for T
impl<T> CompatExt for T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.