Skip to main content

beamterm_core/
error.rs

1/// Error categories for the core rendering engine.
2#[derive(thiserror::Error, Debug)]
3pub enum Error {
4    /// Shader compilation, linking, or program creation errors.
5    #[error("Shader error: {0}")]
6    Shader(String),
7
8    /// GL resource creation or management errors.
9    #[error("Resource error: {0}")]
10    Resource(String),
11
12    /// External data loading or parsing errors.
13    #[error("Data error: {0}")]
14    Data(String),
15}
16
17impl Error {
18    // Shader errors
19    pub(crate) fn shader_creation_failed(detail: &str) -> Self {
20        Self::Shader(format!("Shader creation failed: {detail}"))
21    }
22
23    pub(crate) fn shader_program_creation_failed(detail: impl std::fmt::Display) -> Self {
24        Self::Shader(format!("Shader program creation failed: {detail}"))
25    }
26
27    pub(crate) fn shader_compilation_failed(stage: impl std::fmt::Display, log: String) -> Self {
28        Self::Shader(format!("{stage} shader compilation failed: {log}"))
29    }
30
31    pub(crate) fn shader_link_failed(log: String) -> Self {
32        Self::Shader(format!("Shader linking failed: {log}"))
33    }
34
35    // Resource errors
36    pub(crate) fn buffer_creation_failed(
37        buffer_type: &str,
38        detail: impl std::fmt::Display,
39    ) -> Self {
40        Self::Resource(format!("Failed to create {buffer_type} buffer: {detail}"))
41    }
42
43    pub(crate) fn vertex_array_creation_failed(detail: impl std::fmt::Display) -> Self {
44        Self::Resource(format!("Failed to create vertex array object: {detail}"))
45    }
46
47    pub(crate) fn texture_creation_failed(detail: impl std::fmt::Display) -> Self {
48        Self::Resource(format!("Failed to create texture: {detail}"))
49    }
50
51    pub(crate) fn uniform_location_failed(name: &str) -> Self {
52        Self::Resource(format!("Failed to get uniform location: {name}"))
53    }
54}