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}