aboutsummaryrefslogtreecommitdiff
path: root/crates/tt/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/tt/src/lib.rs')
-rw-r--r--crates/tt/src/lib.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/crates/tt/src/lib.rs b/crates/tt/src/lib.rs
index 20c3f5eab..7c796f564 100644
--- a/crates/tt/src/lib.rs
+++ b/crates/tt/src/lib.rs
@@ -240,6 +240,17 @@ pub enum ExpansionError {
240 ExpansionError(String), 240 ExpansionError(String),
241} 241}
242 242
243impl fmt::Display for ExpansionError {
244 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
245 match self {
246 ExpansionError::IOError(e) => write!(f, "I/O error: {}", e),
247 ExpansionError::JsonError(e) => write!(f, "JSON decoding error: {}", e),
248 ExpansionError::Unknown(e) => write!(f, "{}", e),
249 ExpansionError::ExpansionError(e) => write!(f, "proc macro returned error: {}", e),
250 }
251 }
252}
253
243pub trait TokenExpander: Debug + Send + Sync + RefUnwindSafe { 254pub trait TokenExpander: Debug + Send + Sync + RefUnwindSafe {
244 fn expand(&self, subtree: &Subtree, attrs: Option<&Subtree>) 255 fn expand(&self, subtree: &Subtree, attrs: Option<&Subtree>)
245 -> Result<Subtree, ExpansionError>; 256 -> Result<Subtree, ExpansionError>;