32 lines
721 B
Rust
32 lines
721 B
Rust
|
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) ,
|
||
|
} ;
|
||
|
}
|