zoodex/src/error.rs

35 lines
662 B
Rust

use std::any::Any;
use std::result;
#[derive(Debug)]
pub enum ZoodexError {
CollectionFileReadError,
}
pub type Result<Success> = result::Result<Success, ZoodexError>;
impl From<Box<dyn Any + Send>> for ZoodexError {
fn from(error: Box<dyn Any + Send>) -> Self {
*error.downcast().unwrap()
}
}
macro_rules! async_result_context {(
$future: expr
$(, ok => $on_success: expr)?
$(, err => $on_failure: expr)?$(,)?
) => {
#[allow(unreachable_patterns)]
match $future.await {
$(Ok(value) => $on_success(value),)?
Ok(_) => {},
$(Err(error) => $on_failure(error),)?
Err(_) => {},
}
}}
pub(crate) use async_result_context;