use core::fmt;
use serde::Deserialize;
#[derive(Debug, Deserialize)]
pub struct Error {
#[serde(rename = "err_code")]
pub code: u64,
#[serde(rename = "code")]
pub status: u16,
pub description: String,
}
impl std::error::Error for Error {}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"JetStream response error code: {}, status: {}, description: {}",
self.code, self.status, self.description
)
}
}
#[derive(Debug, Deserialize)]
#[serde(untagged)]
pub enum Response<T> {
Err { error: Error },
Ok(T),
}