Skip to main content

qubit_fs/error/
fs_operation.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//! Filesystem operation identifiers used in errors.
9
10/// Filesystem operation that produced an error.
11///
12/// # Examples
13///
14/// ```rust
15/// use qubit_fs::error::{FsError, FsErrorKind, FsOperation};
16///
17/// let error = FsError::new(FsErrorKind::NotFound, FsOperation::Stat, "missing");
18/// assert_eq!(FsOperation::Stat, error.operation());
19/// ```
20#[derive(Clone, Copy, Debug, Eq, PartialEq)]
21#[non_exhaustive]
22pub enum FsOperation {
23    /// Path parsing or normalization.
24    ParsePath,
25    /// URI parsing or normalization.
26    ParseUri,
27    /// Construction-time filesystem property validation.
28    ValidateProperties,
29    /// Verification of a provider operation outcome.
30    ValidateProviderOutcome,
31    /// Metadata lookup.
32    Stat,
33    /// Existence check.
34    Exists,
35    /// Directory listing.
36    List,
37    /// Reader creation.
38    OpenReader,
39    /// Byte transfer from an already-open reader.
40    Read,
41    /// Writer creation.
42    OpenWriter,
43    /// Byte transfer to an already-open writer.
44    Write,
45    /// Writer publication.
46    CommitWriter,
47    /// Writer cancellation and cleanup.
48    AbortWriter,
49    /// Directory creation.
50    CreateDir,
51    /// File or directory deletion.
52    Delete,
53    /// Rename or move.
54    Rename,
55    /// Copy.
56    Copy,
57    /// Provider copy primitive invocation.
58    BeginCopy,
59    /// Temporary resource creation.
60    CreateTemp,
61    /// Temporary resource cleanup.
62    CleanupTemp,
63    /// Temporary-resource ownership transfer to the caller.
64    KeepTemp,
65    /// Temporary resource persistence.
66    PersistTemp,
67    /// Provider registration or service creation.
68    Provider,
69    /// Operation not covered by a more specific variant.
70    Other,
71}