Skip to main content

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}