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