use std :: { * , any :: * , future :: * } ; # [ derive (Debug) ] pub enum ZoodexError { CollectionFileError , } pub type Result = 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 > , 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) , } ; }