torg_core/
error.rs

1//! Error types for TØR-G graph construction and evaluation.
2
3use thiserror::Error;
4
5/// Errors that can occur during graph construction.
6#[derive(Debug, Error, Clone, PartialEq, Eq)]
7pub enum BuildError {
8    /// Token not valid in current state.
9    #[error("unexpected token in current state")]
10    UnexpectedToken,
11
12    /// Attempted to define an ID that already exists.
13    #[error("duplicate definition of ID {0}")]
14    DuplicateDefinition(u16),
15
16    /// Referenced an ID that hasn't been defined yet.
17    #[error("undefined reference to ID {0}")]
18    UndefinedReference(u16),
19
20    /// Node definition was not completed (missing NodeEnd).
21    #[error("node definition incomplete")]
22    IncompleteNode,
23
24    /// Graph has no declared outputs.
25    #[error("graph has no outputs")]
26    NoOutputs,
27
28    /// Maximum node count exceeded.
29    #[error("maximum nodes exceeded ({0})")]
30    MaxNodesExceeded(usize),
31
32    /// Maximum graph depth exceeded.
33    #[error("maximum depth exceeded ({0})")]
34    MaxDepthExceeded(usize),
35
36    /// Maximum input count exceeded.
37    #[error("maximum inputs exceeded ({0})")]
38    MaxInputsExceeded(usize),
39
40    /// Maximum output count exceeded.
41    #[error("maximum outputs exceeded ({0})")]
42    MaxOutputsExceeded(usize),
43}
44
45/// Errors that can occur during graph evaluation.
46#[derive(Debug, Error, Clone, PartialEq, Eq)]
47pub enum EvalError {
48    /// Required input value was not provided.
49    #[error("missing input for ID {0}")]
50    MissingInput(u16),
51
52    /// Output references an undefined ID.
53    #[error("missing output for ID {0}")]
54    MissingOutput(u16),
55
56    /// Internal error: value not computed for ID.
57    #[error("undefined value for ID {0}")]
58    UndefinedValue(u16),
59}