use crate::vk_error::VkError;
use std::sync::Arc;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(thiserror::Error, Debug, Clone)]
pub enum Error {
#[error("VK error({0})")]
VK(Box<VkError>),
#[error("Shared VK error({0})")]
SharedVK(Arc<VkError>),
#[error("Network error({0})")]
Network(Arc<hyper::Error>),
#[error("Serializion error({0})")]
Serialization(Arc<serde_json::Error>),
}
impl From<VkError> for Error {
fn from(error: VkError) -> Self {
Self::VK(Box::new(error))
}
}
impl From<Arc<VkError>> for Error {
fn from(error: Arc<VkError>) -> Self {
Self::SharedVK(error)
}
}
impl From<Arc<hyper::Error>> for Error {
fn from(error: Arc<hyper::Error>) -> Self {
Self::Network(error)
}
}
impl From<Arc<serde_json::Error>> for Error {
fn from(error: Arc<serde_json::Error>) -> Self {
Self::Serialization(error)
}
}