Skip to main content

CopyOptions

Struct CopyOptions 

Source
pub struct CopyOptions {
    pub if_not_exists: bool,
    pub if_match: Option<String>,
    pub if_none_match: Option<String>,
    pub if_version_match: Option<String>,
    pub if_version_not_match: Option<String>,
    pub if_not_changed: Option<Metadata>,
    pub source_version: Option<String>,
    pub source_content_length_hint: Option<u64>,
    pub concurrent: usize,
    pub chunk: Option<usize>,
}
Expand description

Options for copy operations.

Each condition checks the destination file, never the source, and every condition must hold for the copy to proceed:

See the conditional operation specification for the complete cross-operation contract.

Fields§

§if_not_exists: bool

Copy only when no file exists at the destination path.

The condition succeeds when the destination path is empty, so the copy creates the destination file. An existing destination file fails the copy with crate::ErrorKind::ConditionNotMatch.

The operation returns crate::ErrorKind::Unsupported when the service does not advertise crate::Capability::copy_with_if_not_exists.

§if_match: Option<String>

Copy only when the destination file has this exact ETag.

The condition succeeds when the destination file exists and its ETag equals this value. A destination file with a different ETag, or a missing destination file, fails the copy with crate::ErrorKind::ConditionNotMatch. Only concrete ETag values are portable; a wildcard such as "*" has no portable meaning here.

The operation returns crate::ErrorKind::Unsupported when the service does not advertise crate::Capability::copy_with_if_match.

§if_none_match: Option<String>

Copy only when the destination file does not have this ETag.

With a concrete ETag value, the condition succeeds when the destination file has a different ETag or does not exist; the copy then replaces or creates the destination file. A destination file whose ETag equals this value fails the copy with crate::ErrorKind::ConditionNotMatch. Only concrete ETag values are portable; a wildcard such as "*" has no portable meaning here.

The operation returns crate::ErrorKind::Unsupported when the service does not advertise crate::Capability::copy_with_if_none_match.

§if_version_match: Option<String>

Copy only when the destination file has this exact version.

The condition succeeds when the destination file exists and its version equals this value. A destination file with a different version, or a missing destination file, fails the copy with crate::ErrorKind::ConditionNotMatch.

The operation returns crate::ErrorKind::Unsupported when the service does not advertise crate::Capability::copy_with_if_version_match.

§if_version_not_match: Option<String>

Copy only when the destination file does not have this version.

The condition succeeds when the destination file exists with a different version. A destination file whose version equals this value fails the copy with crate::ErrorKind::ConditionNotMatch. When no destination file exists, no portable behavior is defined.

The operation returns crate::ErrorKind::Unsupported when the service does not advertise crate::Capability::copy_with_if_version_not_match.

§if_not_changed: Option<Metadata>

Copy only when the destination file still has the identity recorded in this metadata.

Pass metadata previously returned by OpenDAL for the destination path. OpenDAL derives a version match when the service supports version conditions and the metadata contains a version. Otherwise it derives an ETag match when possible. A changed or missing destination file fails the copy with crate::ErrorKind::ConditionNotMatch, as does combining this option with a conflicting if_match or if_version_match value.

The operation returns crate::ErrorKind::Unsupported when the service does not support the derived primitive condition, and crate::ErrorKind::ConfigInvalid when the metadata contains neither a version nor an ETag.

§source_version: Option<String>

Copy from a specific source file version.

This selects which stored version of the source the copy reads; it is not a condition on the destination file. Destination behavior follows normal copy semantics.

Check crate::Capability::copy_with_source_version before using this option.

§source_content_length_hint: Option<u64>

Asserted complete content length of the source object.

OpenDAL may trust this value without reading source metadata. It can use the value to plan copied ranges and to construct the returned metadata. An incorrect value can therefore cause incomplete copy planning, failed requests, or incorrect result metadata.

A service can ignore this value when its copy operation already reports an authoritative copied size.

This option does not pin the source object or protect the copy from a concurrent source change. Set it only when the caller can guarantee that the value describes the object that the service will copy, for example by selecting an immutable Self::source_version. Otherwise omit it if the source can change.

§concurrent: usize

Sets concurrent copy operations for this copier.

This is a best-effort execution option. Services that cannot split copy into concurrent server-side tasks can ignore it.

§chunk: Option<usize>

Sets chunk size for segmented copy operations.

§Capability

Check crate::Capability::copy_can_multi, crate::Capability::copy_multi_min_size and crate::Capability::copy_multi_max_size before using this feature.

This is a best-effort execution option. Services that support server-side segmented copy can use it as the target size for each copy step. Services that cannot split copy operations can ignore it.

Trait Implementations§

Source§

impl Clone for CopyOptions

Source§

fn clone(&self) -> CopyOptions

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for CopyOptions

Source§

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

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

impl Default for CopyOptions

Source§

fn default() -> CopyOptions

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

impl Eq for CopyOptions

Source§

impl PartialEq for CopyOptions

Source§

fn eq(&self, other: &CopyOptions) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for CopyOptions

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

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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> MaybeSend for T
where T: Send,

Source§

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

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

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