macro_rules! cached_key_result { ($cachename:ident : $cachetype:ty = $cacheinstance:expr ; Key = $key:expr; fn $name:ident ($($arg:ident : $argtype:ty),*) -> $ret:ty = $body:expr) => { ... }; ($cachename:ident : $cachetype:ty = $cacheinstance:expr ; Key = $key:expr; async fn $name:ident ($($arg:ident : $argtype:ty),*) -> $ret:ty = $body:expr) => { ... }; }