1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
use std::cell;
use std::convert;
use std::io;
use std::result;
use snap;
use thrift;
quick_error! {
#[derive(Debug, PartialEq)]
pub enum ParquetError {
General(message: String) {
display("Parquet error: {}", message)
description(message)
from(e: io::Error) -> (format!("underlying IO error: {}", e))
from(e: snap::Error) -> (format!("underlying snap error: {}", e))
from(e: thrift::Error) -> (format!("underlying Thrift error: {}", e))
from(e: cell::BorrowMutError) -> (format!("underlying borrow error: {}", e))
}
NYI(message: String) {
display("NYI: {}", message)
description(message)
}
EOF(message: String) {
display("EOF: {}", message)
description(message)
}
}
}
pub type Result<T> = result::Result<T, ParquetError>;
impl convert::From<ParquetError> for io::Error {
fn from(e: ParquetError) -> Self {
io::Error::new(io::ErrorKind::Other, e)
}
}
macro_rules! general_err {
($fmt:expr) => (ParquetError::General($fmt.to_owned()));
($fmt:expr, $($args:expr),*) => (ParquetError::General(format!($fmt, $($args),*)));
($e:expr, $fmt:expr) => (ParquetError::General($fmt.to_owned(), $e));
($e:ident, $fmt:expr, $($args:tt),*) => (
ParquetError::General(&format!($fmt, $($args),*), $e));
}
macro_rules! nyi_err {
($fmt:expr) => (ParquetError::NYI($fmt.to_owned()));
($fmt:expr, $($args:expr),*) => (ParquetError::NYI(format!($fmt, $($args),*)));
}
macro_rules! eof_err {
($fmt:expr) => (ParquetError::EOF($fmt.to_owned()));
($fmt:expr, $($args:expr),*) => (ParquetError::EOF(format!($fmt, $($args),*)));
}