Skip to main content

mst_parser/
error.rs

1/* src/error.rs */
2
3/// Errors that can occur during template parsing.
4#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
5pub enum Error {
6    /// The recursion depth exceeded `Limits::max_depth`.
7    #[error("recursion depth exceeded (limit: {limit}) at byte {offset}")]
8    DepthExceeded {
9        /// The depth limit that was exceeded.
10        limit: usize,
11        /// The byte offset where the error occurred.
12        offset: usize,
13    },
14
15    /// The total number of AST nodes exceeded `Limits::max_nodes`.
16    #[error("node limit exceeded (limit: {limit}) at byte {offset}")]
17    NodeLimitExceeded {
18        /// The node count limit that was exceeded.
19        limit: usize,
20        /// The byte offset where the error occurred.
21        offset: usize,
22    },
23
24    /// A variable tag `{{` was opened but never closed with `}}`.
25    #[error("unclosed variable tag at byte {offset}")]
26    UnclosedVariable {
27        /// The byte offset of the unclosed `{{`.
28        offset: usize,
29    },
30
31    /// A variable tag was empty, e.g. `{{}}`.
32    #[error("empty variable tag at byte {offset}")]
33    EmptyVariable {
34        /// The byte offset of the empty variable tag `{{`.
35        offset: usize,
36    },
37
38    /// Unbalanced tag nesting detected.
39    #[error("unbalanced tag nesting at byte {offset}")]
40    UnbalancedTag {
41        /// The byte offset where the imbalance was detected.
42        offset: usize,
43    },
44}