qubit-fs 0.2.2

Provider-neutral synchronous and asynchronous filesystem abstraction for Rust
Documentation
// =============================================================================
//    Copyright (c) 2026 Haixing Hu.
//
//    SPDX-License-Identifier: Apache-2.0
//
//    Licensed under the Apache License, Version 2.0.
// =============================================================================
//! Metadata preservation policy.

/// Metadata preservation policy for copy operations.
///
/// # Examples
///
/// ```rust
/// use qubit_fs::copy::MetadataPreservePolicy;
///
/// assert_eq!(MetadataPreservePolicy::Portable, MetadataPreservePolicy::default());
/// ```
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum MetadataPreservePolicy {
    /// Do not preserve metadata.
    None,
    /// Preserve portable metadata fields.
    Portable,
    /// Preserve user-defined metadata.
    UserMetadata,
    /// Preserve provider-native metadata when possible.
    ProviderNative,
    /// Preserve every metadata field that the provider can represent.
    All,
}

impl Default for MetadataPreservePolicy {
    /// Preserves portable metadata by default.
    #[inline]
    fn default() -> Self {
        Self::Portable
    }
}