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:
- A false condition fails the copy with
crate::ErrorKind::ConditionNotMatch. - A condition the service does not advertise through its capability fails
the copy with
crate::ErrorKind::Unsupported; OpenDAL never silently drops a condition. - A missing source fails the copy with
crate::ErrorKind::NotFound; when a condition error applies at the same time, which error the copy returns is unspecified. - A service-side conflict unrelated to these conditions surfaces as
crate::ErrorKind::Conflict.
See the conditional operation specification for the complete cross-operation contract.
Fields§
§if_not_exists: boolCopy 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: usizeSets 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
impl Clone for CopyOptions
Source§fn clone(&self) -> CopyOptions
fn clone(&self) -> CopyOptions
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CopyOptions
impl Debug for CopyOptions
Source§impl Default for CopyOptions
impl Default for CopyOptions
Source§fn default() -> CopyOptions
fn default() -> CopyOptions
impl Eq for CopyOptions
Source§impl PartialEq for CopyOptions
impl PartialEq for CopyOptions
impl StructuralPartialEq for CopyOptions
Auto Trait Implementations§
impl Freeze for CopyOptions
impl RefUnwindSafe for CopyOptions
impl Send for CopyOptions
impl Sync for CopyOptions
impl Unpin for CopyOptions
impl UnsafeUnpin for CopyOptions
impl UnwindSafe for CopyOptions
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.