macro_rules! cached_control {
($cachename:ident : $cachetype:ty = $cacheinstance:expr ;
Key = $key:expr;
PostGet($cached_value:ident) = $post_get:expr;
PostExec($body_value:ident) = $post_exec:expr;
Set($set_value:ident) = $pre_set:expr;
Return($ret_value:ident) = $return:expr;
fn $name:ident ($($arg:ident : $argtype:ty),*) -> $ret:ty = $body:expr) => { ... };
($cachename:ident : $cachetype:ty = $cacheinstance:expr ;
Key = $key:expr;
PostGet($cached_value:ident) = $post_get:expr;
PostExec($body_value:ident) = $post_exec:expr;
Set($set_value:ident) = $pre_set:expr;
Return($ret_value:ident) = $return:expr;
async fn $name:ident ($($arg:ident : $argtype:ty),*) -> $ret:ty = $body:expr) => { ... };
}