clickhouse_utils/
error.rs1#[derive(Debug)]
2#[must_use]
3pub struct ClickhouseUtilsError(
4 String,
5 Option<Box<dyn std::error::Error + Send + Sync + 'static>>,
6);
7
8pub type Result<T> = std::result::Result<T, ClickhouseUtilsError>;
9
10impl ClickhouseUtilsError {
11 pub fn new(message: String) -> Self {
12 ClickhouseUtilsError(message, None)
13 }
14
15 pub fn into_inner(self) -> Option<Box<dyn std::error::Error + Send + Sync + 'static>> {
16 self.1
17 }
18
19 pub fn message(&self) -> &str {
20 &self.0
21 }
22}
23
24impl std::fmt::Display for ClickhouseUtilsError {
25 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
26 write!(f, "ClickhouseUtils error: {}", self.0)
27 }
28}
29
30impl std::error::Error for ClickhouseUtilsError where ClickhouseUtilsError: Send + Sync + 'static {}
32
33impl From<std::io::Error> for ClickhouseUtilsError {
34 fn from(error: std::io::Error) -> Self {
35 ClickhouseUtilsError(format!("IO error: {}", error), Some(Box::new(error)))
36 }
37}
38
39impl From<clickhouse::error::Error> for ClickhouseUtilsError {
40 fn from(error: clickhouse::error::Error) -> Self {
41 ClickhouseUtilsError(
42 format!("Clickhouse error: {}", error),
43 Some(Box::new(error)),
44 )
45 }
46}
47
48impl From<std::time::SystemTimeError> for ClickhouseUtilsError {
49 fn from(error: std::time::SystemTimeError) -> Self {
50 ClickhouseUtilsError(
51 format!("System time error: {}", error),
52 Some(Box::new(error)),
53 )
54 }
55}