Struct opendal::Capability
source · pub struct Capability {Show 45 fields
pub stat: bool,
pub stat_with_if_match: bool,
pub stat_with_if_none_match: 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 read: bool,
pub read_with_if_match: bool,
pub read_with_if_none_match: 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_cache_control: bool,
pub write_with_if_none_match: bool,
pub write_with_user_metadata: bool,
pub write_multi_max_size: Option<usize>,
pub write_multi_min_size: Option<usize>,
pub write_multi_align_size: Option<usize>,
pub write_total_max_size: Option<usize>,
pub create_dir: bool,
pub delete: bool,
pub delete_with_version: bool,
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 presign: bool,
pub presign_read: bool,
pub presign_stat: bool,
pub presign_write: bool,
pub batch: bool,
pub batch_delete: bool,
pub batch_max_operations: Option<usize>,
pub blocking: bool,
}
Expand description
Capability is used to describe what operations are supported by current Operator.
Via capability, we can know:
- Whether current Operator supports read or not.
- Whether current Operator supports read with if match or not.
- What’s current Operator max supports batch operations count.
Add fields of Capabilities with be public and can be accessed directly.
§Notes
Every operator has two kinds of capabilities:
OperatorInfo::native_capability
reflects the native support for operations.OperatorInfo::full_capability
reflects the full support for operations.
It’s possible that some operations are not supported by current Operator, but still can be used. For examples:
- S3 doesn’t support
seek
natively, but we implement it viarange
header. - S3 doesn’t support blocking API, but
BlockingLayer
makes it possible.
Users can use full_capability to decide what operations can be used and use native_capability to decide if this operation optimized or not.
§Naming Style
- Operation itself should be in lower case, like
read
,write
. - Operation with sub operations should be named like
presign_read
. - Operation with variants should be named like
read_can_seek
. - Operation with arguments should be named like
read_with_range
. - Operation with limitations should be named like
batch_max_operations
.
Fields§
§stat: bool
If operator supports stat.
stat_with_if_match: bool
If operator supports stat with if match.
stat_with_if_none_match: bool
If operator supports stat with if none match.
stat_with_override_cache_control: bool
if operator supports stat with override cache control.
stat_with_override_content_disposition: bool
if operator supports stat with override content disposition.
stat_with_override_content_type: bool
if operator supports stat with override content type.
stat_with_version: bool
if operator supports stat with version.
read: bool
If operator supports read.
read_with_if_match: bool
If operator supports read with if match.
read_with_if_none_match: bool
If operator supports read with if none match.
read_with_override_cache_control: bool
if operator supports read with override cache control.
read_with_override_content_disposition: bool
if operator supports read with override content disposition.
read_with_override_content_type: bool
if operator supports read with override content type.
read_with_version: bool
if operator supports read with version.
write: bool
If operator supports write.
write_can_multi: bool
If operator supports write can be called in multi times.
write_can_empty: bool
If operator supports write with empty content.
write_can_append: bool
If operator supports write by append.
write_with_content_type: bool
If operator supports write with content type.
write_with_content_disposition: bool
If operator supports write with content disposition.
write_with_cache_control: bool
If operator supports write with cache control.
write_with_if_none_match: bool
If operator supports write with if none match.
write_with_user_metadata: bool
If operator supports write with user defined metadata
write_multi_max_size: Option<usize>
write_multi_max_size is the max size that services support in write_multi.
For example, AWS S3 supports 5GiB as max in write_multi.
write_multi_min_size: Option<usize>
write_multi_min_size is the min size that services support in write_multi.
For example, AWS S3 requires at least 5MiB in write_multi expect the last one.
write_multi_align_size: Option<usize>
write_multi_align_size is the align size that services required in write_multi.
For example, Google GCS requires align size to 256KiB in write_multi.
write_total_max_size: Option<usize>
write_total_max_size is the max size that services support in write_total.
For example, Cloudflare D1 supports 1MB as max in write_total.
create_dir: bool
If operator supports create dir.
delete: bool
If operator supports delete.
delete_with_version: bool
if operator supports delete with version.
copy: bool
If operator supports copy.
rename: bool
If operator supports rename.
list: bool
If operator supports list.
list_with_limit: bool
If backend supports list with limit.
list_with_start_after: bool
If backend supports list with start after.
list_with_recursive: bool
If backend supports list with recursive.
list_with_version: bool
if operator supports list with version.
presign: bool
If operator supports presign.
presign_read: bool
If operator supports presign read.
presign_stat: bool
If operator supports presign stat.
presign_write: bool
If operator supports presign write.
batch: bool
If operator supports batch.
batch_delete: bool
If operator supports batch delete.
batch_max_operations: Option<usize>
The max operations that operator supports in batch.
blocking: bool
If operator supports blocking.
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.