zoodex/src/error.rs

32 lines
721 B
Rust
Raw Normal View History

2024-11-29 21:06:14 +01:00
use std :: { * , any :: * , future :: * } ;
# [ derive (Debug) ] pub enum ZoodexError {
CollectionFileError ,
}
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 ()
}
}
pub async fn async_result_context <
AsyncFunction : Future < Output = Result <Success> > ,
SuccessHandler : Fn (Success) ,
FailureHandler : Fn (ZoodexError) ,
Success ,
> (
function : AsyncFunction ,
on_success : SuccessHandler ,
on_failure : FailureHandler ,
) {
match function . await {
Ok (value) => on_success (value) ,
Err (error) => on_failure (error) ,
} ;
}