Macro cached::cached [] [src]

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

Creates a function wrapping a cache. There are several options for specifying a cache-type. 1.) Use the default unbounded cache ```rust,ignore cached!{CACHE_NAME >> func_name(arg1: arg1_type, arg2: arg2_type) -> return_type = { }}

2.) Use an explicitly specified cache-type, but let the macro instantiate it. The cache-type is expected to have a new method that takes no arguments. ```rust,ignore cached!{CACHE_NAME: SpecificCacheType >> func_name(arg1: arg1_type, arg2: arg2_type) -> return_type = { }}

3.) Use an explicitly specified cache-type and provide the instantiated cache struct. This would allow using caches that require args in their constructor or has a constructor method other than a simple new. rust,ignore cached!{CACHE_NAME: MyCache = MyCache::with_capacity(arg); >> func_name(arg1: arg1_type, arg2: arg2_type) -> return_type = { <regular function body> }}