tonic_buf_build/
error.rs

1use std::{error::Error, fmt::Display};
2
3#[derive(Debug)]
4pub struct TonicBufBuildError {
5    pub message: String,
6    pub cause: Option<Box<dyn Error>>,
7}
8
9impl TonicBufBuildError {
10    pub(crate) fn new(message: &str, cause: Box<dyn Error>) -> Self {
11        Self {
12            message: message.into(),
13            cause: Some(cause),
14        }
15    }
16
17    pub(crate) fn new_without_cause(message: &str) -> Self {
18        Self {
19            message: message.into(),
20            cause: None,
21        }
22    }
23}
24
25impl Display for TonicBufBuildError {
26    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
27        match &self.cause {
28            Some(cause) => f.write_str(&format!("{}: {}", self.message, cause)),
29            None => f.write_str(&self.message),
30        }
31    }
32}
33
34impl Error for TonicBufBuildError {}