Skip to main content

qubit_fs/metadata/
atomicity_requirement.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//! Atomicity requirement used by write, rename, and persist operations.
9
10/// Atomicity contract requested by an operation.
11///
12/// # Examples
13///
14/// ```rust
15/// use qubit_fs::metadata::AtomicityRequirement;
16///
17/// assert_eq!(AtomicityRequirement::Preferred, AtomicityRequirement::default());
18/// ```
19#[derive(Clone, Copy, Debug, Eq, PartialEq)]
20pub enum AtomicityRequirement {
21    /// Success must be atomic; unsupported guarantees fail before side effects.
22    Required,
23    /// Prefer an atomic method but permit a reported non-atomic result.
24    Preferred,
25    /// Do not require atomicity, although an implementation may still use it.
26    NotRequired,
27}
28
29impl Default for AtomicityRequirement {
30    /// Prefers atomic behavior while permitting an explicit fallback.
31    #[inline]
32    fn default() -> Self {
33        Self::Preferred
34    }
35}