tmpl_resolver/
error.rs

1use thiserror::Error;
2
3pub type ResolverResult<T> = Result<T, ResolverError>;
4
5use crate::MiniStr;
6
7/// Error hierarchy for template resolution
8///
9/// ## Error Handling Strategy
10/// - Detailed error variants for precise diagnostics
11/// - Uses thiserror for idiomatic error handling
12/// - Compact error strings for low-overhead reporting
13#[derive(Debug, Error)]
14pub enum ResolverError {
15  #[error("Undefined variable: {0}")]
16  UndefinedVariable(MiniStr),
17  //
18  #[error("Missing paramter: {0}")]
19  MissingParameter(MiniStr),
20  //
21  #[error("No default branch: {0}")]
22  NoDefaultBranch(MiniStr),
23  //
24  #[error("Parse error: {0}")]
25  ParseError(MiniStr),
26  //
27  #[cfg(feature = "std")]
28  #[error("I/O error: {0}")]
29  IoError(#[from] std::io::Error),
30  //
31  #[cfg(feature = "bincode")]
32  #[error("Bincode serialization error: {0}")]
33  EncodeBinError(#[from] bincode::error::EncodeError),
34  //
35  #[cfg(feature = "bincode")]
36  #[error("Bincode deserialization error: {0}")]
37  DecodeBinError(#[from] bincode::error::DecodeError),
38
39  #[cfg(feature = "toml")]
40  #[error("TOML deserialization error: {0}")]
41  DecodeTomlError(#[from] toml::de::Error),
42
43  #[cfg(feature = "toml")]
44  #[error("TOML serialization error: {0}")]
45  EncodeTomlError(#[from] toml::ser::Error), //
46}