Skip to main content

qubit_fs/copy/
metadata_preserve_policy.rs

1// =============================================================================
2//    Copyright (c) 2026 Haixing Hu.
3//
4//    SPDX-License-Identifier: Apache-2.0
5//
6//    Licensed under the Apache License, Version 2.0.
7// =============================================================================
8//! Metadata preservation policy.
9
10/// Metadata preservation policy for copy operations.
11///
12/// # Examples
13///
14/// ```rust
15/// use qubit_fs::copy::MetadataPreservePolicy;
16///
17/// assert_eq!(MetadataPreservePolicy::Portable, MetadataPreservePolicy::default());
18/// ```
19#[derive(Clone, Copy, Debug, Eq, PartialEq)]
20pub enum MetadataPreservePolicy {
21    /// Do not preserve metadata.
22    None,
23    /// Preserve portable metadata fields.
24    Portable,
25    /// Preserve user-defined metadata.
26    UserMetadata,
27    /// Preserve provider-native metadata when possible.
28    ProviderNative,
29    /// Preserve every metadata field that the provider can represent.
30    All,
31}
32
33impl Default for MetadataPreservePolicy {
34    /// Preserves portable metadata by default.
35    #[inline]
36    fn default() -> Self {
37        Self::Portable
38    }
39}