qubit_fs/options/persist_options.rs
1/*******************************************************************************
2 *
3 * Copyright (c) 2026 Haixing Hu.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 *
7 * Licensed under the Apache License, Version 2.0.
8 *
9 ******************************************************************************/
10//! Temporary resource persistence options.
11
12use crate::{
13 AtomicityRequirement,
14 MetadataPreservePolicy,
15};
16
17/// Options controlling temporary resource persistence.
18#[derive(Clone, Debug, Eq, PartialEq)]
19pub struct PersistOptions {
20 /// Whether the destination may be overwritten.
21 pub overwrite: bool,
22 /// Required atomicity level.
23 pub atomic: AtomicityRequirement,
24 /// Whether copy plus delete may be used when rename is unavailable.
25 pub allow_copy_delete: bool,
26 /// Metadata preservation policy.
27 pub preserve_metadata: MetadataPreservePolicy,
28}
29
30impl Default for PersistOptions {
31 #[inline]
32 fn default() -> Self {
33 Self {
34 overwrite: false,
35 atomic: AtomicityRequirement::Required,
36 allow_copy_delete: false,
37 preserve_metadata: MetadataPreservePolicy::Portable,
38 }
39 }
40}