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}