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