Skip to main content

Capability

Struct Capability 

Source
pub struct Capability {
Show 59 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 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 read_with_suffix: 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 create_dir: bool, pub delete: bool, pub delete_with_version: bool, pub delete_with_recursive: bool, pub delete_max_size: Option<usize>, pub copy: bool, pub copy_with_if_not_exists: bool, pub copy_with_if_match: bool, pub copy_with_source_version: bool, pub copy_can_multi: bool, pub copy_multi_max_size: Option<usize>, pub copy_multi_min_size: Option<usize>, 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_versions: bool, pub list_with_deleted: bool, pub presign: bool, pub presign_read: bool, pub presign_stat: bool, pub presign_write: bool, pub presign_delete: bool, pub shared: 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 Type

OperatorInfo::capability represents all operations available on the current operator, including those implemented through layers.

§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 capability to determine available 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.

§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.

§read_with_suffix: bool

Indicates if suffix 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.

§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_with_recursive: bool

Indicates if recursive delete operations are supported.

§delete_max_size: Option<usize>

Maximum size supported for single delete operations.

§copy: bool

Indicates if copy operations are supported.

§copy_with_if_not_exists: bool

Indicates if conditional copy operations with if-not-exists are supported.

§copy_with_if_match: bool

Indicates if conditional copy operations with if-match are supported.

§copy_with_source_version: bool

Indicates if copy operations from a specific source version are supported.

§copy_can_multi: bool

Indicates if copy operations can be split into multiple server-side tasks.

§copy_multi_max_size: Option<usize>

Maximum size supported for segmented copy tasks.

§copy_multi_min_size: Option<usize>

Minimum size required for segmented copy tasks.

§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_versions: bool

Indicates if listing with versions included is supported.

§list_with_deleted: bool

Indicates if listing with deleted files included is supported.

§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.

§presign_delete: bool

Indicates if presigned URLs for delete operations are supported.

§shared: bool

Indicate if the operator supports shared access.

Trait Implementations§

Source§

impl Clone for Capability

Source§

fn clone(&self) -> Capability

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Capability

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for Capability

Source§

fn default() -> Capability

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Capability

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<Capability, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for Capability

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for Capability

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<U> As for U

§

fn as_<T>(self) -> T
where T: CastFrom<U>,

Casts self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> DropFlavorWrapper<T> for T

§

type Flavor = MayDrop

The DropFlavor that [wrap]s T into Self
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Generator<T> for T
where T: Clone,

§

fn generate(&mut self) -> T

§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

§

const WITNESS: W = W::MAKE

A constant of the type witness
§

impl<T> Identity for T
where T: ?Sized,

§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
§

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<L> LayerExt<L> for L

§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in [Layered].
§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows 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) -> R
where R: 'a,

Mutably borrows 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
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> SampleLatinHyperCube for T
where T: Copy + Default,

§

fn sample_latin_hypercube( data: MatrixBase<&[T]>, num_samples: usize, seed: Option<u64>, ) -> MatrixBase<Box<[T]>>

§

impl<T> Scope for T

§

fn with<F, R>(self, f: F) -> R
where Self: Sized, F: FnOnce(Self) -> R,

Scoped with ownership.
§

fn with_ref<F, R>(&self, f: F) -> R
where F: FnOnce(&Self) -> R,

Scoped with reference.
§

fn with_mut<F, R>(&mut self, f: F) -> R
where F: FnOnce(&mut Self) -> R,

Scoped with mutable reference.
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

§

fn is_within(&self, b: &G2) -> bool

§

impl<T> AsyncFriendly for T
where T: Send + Sync + 'static,

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> MaybeSend for T
where T: Send,

§

impl<T> MaybeSend for T
where T: Send,

§

impl<E> ResultError for E
where E: Send + Debug + Sync,

§

impl<T> ResultType for T
where T: Send + Clone + Sync + Debug,

§

impl<T> Value for T
where T: Send + Sync + 'static,