Macro engine::cache[][src]

macro_rules! cache {
    (fn $name:ident ($($arg:ident: $arg_type:ty), *) -> $ret:ty => $body:expr) => { ... };
}

A macro for defining functions whose return values will wrapped in a Cache.

Example

use engine::cache;

cache! {
   fn fib(n: u32) -> u32 => {
     match n {
        0 => 1,
        1 => 1,
        _ => fib(n - 1) + fib(n - 2),
     }
   }
}

assert_eq!(fib(20), 10946);
assert_eq!(FIB_CACHE.lock().unwrap().get(&20), Some(&10946));