1use std::io;
2
3use postcard::Error as PostcardError;
4use thiserror::Error;
5
6#[derive(Error, Debug)]
8pub enum ColumnarError {
9 #[error("postcard error: {0}")]
10 SerializeError(#[from] PostcardError),
11 #[error("`{0}` during columnar encoding")]
12 ColumnarEncodeError(String),
13 #[error("`{0}` during columnar decoding")]
14 ColumnarDecodeError(Box<str>),
15 #[error("`{0}` during rle encoding")]
16 RleEncodeError(String),
17 #[error("`{0}` during rle decoding")]
18 RleDecodeError(String),
19 #[error("invalid strategy code `{0}`")]
20 InvalidStrategy(u8),
21 #[error("io error: {0}")]
22 IOError(#[from] io::Error),
23 #[error("overflow error")]
24 OverflowError,
25 #[error("unknown data store error")]
26 Unknown,
27}
28
29impl serde::ser::Error for ColumnarError {
30 fn custom<T: std::fmt::Display>(msg: T) -> Self {
31 ColumnarError::ColumnarEncodeError(msg.to_string())
32 }
33}