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 {}