1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum WireError {
8 #[error("Failed to serialize value: {0}")]
10 SerializationError(String),
11
12 #[error("Failed to deserialize value: {0}")]
14 DeserializationError(String),
15
16 #[error("Invalid value: {0}")]
18 InvalidValue(String),
19
20 #[error("Type mismatch: expected {expected}, got {actual}")]
22 TypeMismatch { expected: String, actual: String },
23
24 #[error("Missing required field: {0}")]
26 MissingField(String),
27
28 #[error("Format not found: {0}")]
30 FormatNotFound(String),
31
32 #[error("JSON error: {0}")]
34 JsonError(#[from] serde_json::Error),
35}
36
37pub type Result<T> = std::result::Result<T, WireError>;
39
40impl From<rmp_serde::encode::Error> for WireError {
41 fn from(e: rmp_serde::encode::Error) -> Self {
42 WireError::SerializationError(e.to_string())
43 }
44}
45
46impl From<rmp_serde::decode::Error> for WireError {
47 fn from(e: rmp_serde::decode::Error) -> Self {
48 WireError::DeserializationError(e.to_string())
49 }
50}