aboutsummaryrefslogtreecommitdiff
path: root/stockton-skeleton/src/error.rs
diff options
context:
space:
mode:
authortcmal <me@aria.rip>2024-08-25 17:44:23 +0100
committertcmal <me@aria.rip>2024-08-25 17:44:23 +0100
commit0353181306702c40ad0fe482b5c2b159b46794a4 (patch)
tree33acc6a9e8ea4705884cf93b78cf869008f71832 /stockton-skeleton/src/error.rs
parent664f0b0777ba96298b29f0c753d52a81cbb233f1 (diff)
refactor(all): rename some crates
Diffstat (limited to 'stockton-skeleton/src/error.rs')
-rw-r--r--stockton-skeleton/src/error.rs64
1 files changed, 64 insertions, 0 deletions
diff --git a/stockton-skeleton/src/error.rs b/stockton-skeleton/src/error.rs
new file mode 100644
index 0000000..1f57892
--- /dev/null
+++ b/stockton-skeleton/src/error.rs
@@ -0,0 +1,64 @@
+//! Error types
+
+use thiserror::Error;
+
+#[derive(Error, Debug)]
+pub enum LockPoisoned {
+ #[error("Device lock poisoned")]
+ Device,
+
+ #[error("Map lock poisoned")]
+ Map,
+
+ #[error("Queue lock poisoned")]
+ Queue,
+
+ #[error("Other lock poisoned")]
+ Other,
+}
+
+/// Indicates the given property has no acceptable values
+#[derive(Debug, Error)]
+pub enum EnvironmentError {
+ #[error("No supported color format")]
+ ColorFormat,
+
+ #[error("No supported depth format")]
+ DepthFormat,
+
+ #[error("No supported present mode")]
+ PresentMode,
+
+ #[error("No supported composite alpha mode")]
+ CompositeAlphaMode,
+
+ #[error("No suitable queue families found")]
+ NoSuitableFamilies,
+
+ #[error("No suitable memory types found")]
+ NoMemoryTypes,
+
+ #[error("Couldn't use shaderc")]
+ NoShaderC,
+
+ #[error("No suitable queues")]
+ NoQueues,
+}
+
+/// Indicates an issue with the level object being used
+#[derive(Debug, Error)]
+pub enum LevelError {
+ #[error("Referential Integrity broken")]
+ BadReference,
+}
+
+pub fn full_error_display(err: anyhow::Error) -> String {
+ let cont = err
+ .chain()
+ .skip(1)
+ .map(|cause| format!(" caused by: {}", cause))
+ .collect::<Vec<String>>()
+ .join("\n");
+
+ format!("Error: {}\n{}", err, cont)
+}