bolt_proto/
error.rs

1use thiserror::Error;
2
3use crate::{Message, Value};
4
5pub type Result<T> = std::result::Result<T, Error>;
6pub type ConversionResult<T> = std::result::Result<T, ConversionError>;
7pub type SerializeResult<T> = std::result::Result<T, SerializationError>;
8pub type DeserializeResult<T> = std::result::Result<T, DeserializationError>;
9
10#[derive(Debug, Error)]
11pub enum Error {
12    #[error(transparent)]
13    ConversionError(#[from] ConversionError),
14    #[error(transparent)]
15    SerializationError(#[from] SerializationError),
16    #[error(transparent)]
17    DeserializationError(#[from] DeserializationError),
18}
19
20#[derive(Debug, Error)]
21pub enum ConversionError {
22    #[error("invalid conversion from value {0:?}")]
23    FromValue(Value),
24    #[error("invalid conversion from message {0:?}")]
25    FromMessage(Message),
26    #[error(transparent)]
27    TryFromIntError(#[from] std::num::TryFromIntError),
28    #[error(transparent)]
29    Infallible(#[from] std::convert::Infallible),
30}
31
32#[derive(Debug, Error)]
33pub enum SerializationError {
34    #[error("value too large (size: {0})")]
35    ValueTooLarge(usize),
36}
37
38#[derive(Debug, Error)]
39pub enum DeserializationError {
40    #[error("panicked during deserialization")]
41    Panicked,
42    #[error("invalid marker byte: {0:x}")]
43    InvalidMarkerByte(u8),
44    #[error("invalid signature byte: {0:x}")]
45    InvalidSignatureByte(u8),
46    #[error("invalid size ({size} fields) for signature byte {signature:x}")]
47    InvalidSize { size: usize, signature: u8 },
48    #[error("string deserialization failed: {0}")]
49    InvalidUTF8(#[from] std::string::FromUtf8Error),
50    #[error(transparent)]
51    ConversionError(#[from] ConversionError),
52    #[error(transparent)]
53    IoError(#[from] std::io::Error),
54    #[error(transparent)]
55    Infallible(#[from] std::convert::Infallible),
56}