pub struct DeleteOptions {
pub version: Option<String>,
pub recursive: 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>,
}Expand description
Options for delete operations.
Each condition checks the file currently stored at the delete path, and every condition must hold for the delete to proceed:
- A false condition fails the delete with
crate::ErrorKind::ConditionNotMatch. - A condition the service does not advertise through its capability fails
the delete with
crate::ErrorKind::Unsupported; OpenDAL never silently drops a condition. A service that cannot preserve a combination of conditions also returnsUnsupported. - A service-side conflict unrelated to these conditions surfaces as
crate::ErrorKind::Conflict.
Once every condition holds, deleting a missing file remains a successful no-op.
See the conditional operation specification for the complete cross-operation contract.
Fields§
§version: Option<String>Delete the given version of the file instead of the current one.
This selects which stored version the delete removes; it is not a condition on the file.
Check crate::Capability::delete_with_version before using this
option.
recursive: boolWhether to delete the target recursively.
- If
false, behaves like the traditional single-object delete. - If
true, all entries under the path (or sharing the prefix for file-like paths) will be removed.
if_match: Option<String>Delete only when the file at the delete path has this exact ETag.
The condition succeeds when the file exists and its ETag equals this
value. A file with a different ETag, or a missing file, fails the
delete 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::delete_with_if_match.
if_none_match: Option<String>Delete only when the file at the delete path does not have this ETag.
With a concrete ETag value, the condition succeeds when the file has
a different ETag or does not exist; deleting a missing file is then a
successful no-op. A file whose ETag equals this value fails the
delete 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::delete_with_if_none_match.
if_version_match: Option<String>Delete only when the file at the delete path has this exact version.
The condition succeeds when the file exists and its version equals
this value. A file with a different version, or a missing file, fails
the delete with crate::ErrorKind::ConditionNotMatch.
The operation returns crate::ErrorKind::Unsupported when the
service does not advertise
crate::Capability::delete_with_if_version_match.
if_version_not_match: Option<String>Delete only when the file at the delete path does not have this version.
The condition succeeds when the file exists with a different version.
A file whose version equals this value fails the delete with
crate::ErrorKind::ConditionNotMatch. When no file exists at the
delete path, no portable behavior is defined.
The operation returns crate::ErrorKind::Unsupported when the
service does not advertise
crate::Capability::delete_with_if_version_not_match.
if_not_changed: Option<Metadata>Delete only when the file at the delete path still has the identity recorded in this metadata.
Pass metadata previously returned by OpenDAL for the same 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 file fails the delete
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.
Trait Implementations§
Source§impl Clone for DeleteOptions
impl Clone for DeleteOptions
Source§fn clone(&self) -> DeleteOptions
fn clone(&self) -> DeleteOptions
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 DeleteOptions
impl Debug for DeleteOptions
Source§impl Default for DeleteOptions
impl Default for DeleteOptions
Source§fn default() -> DeleteOptions
fn default() -> DeleteOptions
impl Eq for DeleteOptions
Source§impl PartialEq for DeleteOptions
impl PartialEq for DeleteOptions
impl StructuralPartialEq for DeleteOptions
Auto Trait Implementations§
impl Freeze for DeleteOptions
impl RefUnwindSafe for DeleteOptions
impl Send for DeleteOptions
impl Sync for DeleteOptions
impl Unpin for DeleteOptions
impl UnsafeUnpin for DeleteOptions
impl UnwindSafe for DeleteOptions
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.