aster_forge_cloud_files_core/
error.rs1pub type Result<T> = std::result::Result<T, CloudFilesCoreError>;
5
6#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
8pub enum CloudFilesCoreError {
9 #[error("{field} must not be empty")]
11 EmptyValue {
12 field: &'static str,
14 },
15 #[error("native identity is {actual_bytes} bytes, exceeding the {max_bytes}-byte limit")]
17 NativeIdentityTooLarge {
18 actual_bytes: usize,
20 max_bytes: usize,
22 },
23 #[error("range alignment intersection overflowed for {left} and {right}")]
25 AlignmentIntersectionOverflow {
26 left: u64,
28 right: u64,
30 },
31 #[error("required cloud-files capability is missing: {capability}")]
33 MissingRequiredCapability {
34 capability: &'static str,
36 },
37 #[error("invalid cloud item shape: {reason}")]
39 InvalidItemShape {
40 reason: &'static str,
42 },
43 #[error("invalid byte range: {reason}")]
45 InvalidByteRange {
46 reason: &'static str,
48 },
49 #[error("invalid content response: {reason}")]
51 InvalidContentResponse {
52 reason: &'static str,
54 },
55 #[error("invalid mutation intent: {reason}")]
57 InvalidMutationIntent {
58 reason: &'static str,
60 },
61 #[error("invalid mutation transition: {reason}")]
63 InvalidMutationTransition {
64 reason: &'static str,
66 },
67 #[error("session generation must be non-zero")]
69 InvalidSessionGeneration,
70 #[error("local content generation must be non-zero")]
72 InvalidLocalContentGeneration,
73 #[error("invalid content storage state: {reason}")]
75 InvalidContentStorageState {
76 reason: &'static str,
78 },
79 #[error("invalid content eviction transition: {reason}")]
81 InvalidContentEvictionTransition {
82 reason: &'static str,
84 },
85 #[error("invalid content cache write transition: {reason}")]
87 InvalidContentCacheWriteTransition {
88 reason: &'static str,
90 },
91 #[error("invalid content upload transition: {reason}")]
93 InvalidContentUploadTransition {
94 reason: &'static str,
96 },
97}
98
99impl CloudFilesCoreError {
100 pub(crate) const fn empty(field: &'static str) -> Self {
101 Self::EmptyValue { field }
102 }
103
104 pub(crate) const fn invalid_item(reason: &'static str) -> Self {
105 Self::InvalidItemShape { reason }
106 }
107
108 pub(crate) const fn invalid_byte_range(reason: &'static str) -> Self {
109 Self::InvalidByteRange { reason }
110 }
111
112 pub(crate) const fn invalid_content_response(reason: &'static str) -> Self {
113 Self::InvalidContentResponse { reason }
114 }
115
116 pub(crate) const fn invalid_mutation_intent(reason: &'static str) -> Self {
117 Self::InvalidMutationIntent { reason }
118 }
119
120 pub(crate) const fn invalid_mutation_transition(reason: &'static str) -> Self {
121 Self::InvalidMutationTransition { reason }
122 }
123
124 pub(crate) const fn invalid_content_storage(reason: &'static str) -> Self {
125 Self::InvalidContentStorageState { reason }
126 }
127
128 pub(crate) const fn invalid_content_eviction(reason: &'static str) -> Self {
129 Self::InvalidContentEvictionTransition { reason }
130 }
131
132 pub(crate) const fn invalid_content_cache_write(reason: &'static str) -> Self {
133 Self::InvalidContentCacheWriteTransition { reason }
134 }
135
136 pub(crate) const fn invalid_content_upload(reason: &'static str) -> Self {
137 Self::InvalidContentUploadTransition { reason }
138 }
139}