#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("io error: {0}")]
Io(#[from] std::io::Error),
#[error("json error: {0}")]
Json(#[from] serde_json::Error),
#[error(transparent)]
Provider(#[from] crate::message::ErrorCode),
#[error("unexpected response id: expected {expected}, got {got}")]
UnexpectedResponseId { expected: u64, got: u64 },
#[error("unexpected response method")]
UnexpectedResponseMethod,
#[error("provider process exited unexpectedly")]
ProcessExited,
}
impl From<crate::message::ErrorPayload> for Error {
fn from(p: crate::message::ErrorPayload) -> Self {
Error::Provider(crate::message::ErrorCode::from(p))
}
}