1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum Error {
5 #[error("Reached end of buffer")]
6 EndOfBuffer,
7 #[error("Buffer is not byte aligned")]
8 BufferNotByteAligned,
9 #[error("Incorrect value of num_bits, must be less than 9")]
10 IncorrectNumBits,
11 #[error("Not enough data available, required {0} bytes")]
12 NotEnoughBytes(usize),
13 #[error("Not enough data available, required {0} bits")]
14 NotEnoughBits(usize),
15 #[error(transparent)]
16 DecodeUtf8(#[from] std::string::FromUtf8Error),
17 #[error("Decoding u32 to char {0}")]
18 DecodeChar(u32),
19 #[error("{0}")]
20 Message(String),
21 #[error("Parse error: So far we parsed\n\n{0}\n\nand we ran into error: {1}")]
22 ParseError(String, anyhow::Error),
23 #[error("Unknown term constructor tag: {0}.\n\nHere are the buffer bytes ({1} preceding) {2}\n\nBuffer position is {3} and buffer length is {4}")]
24 UnknownTermConstructor(u8, usize, String, usize, usize),
25 #[error(transparent)]
26 Custom(#[from] anyhow::Error),
27}