Macro respo::memo1_call_by

source ·
macro_rules! memo1_call_by {
    ($f:ident, $cache:expr, $key:expr, $arg1:expr) => { ... };
    ($f:ident, $cache:expr, $key:expr, $arg1:expr,) => { ... };
    ($f:ident, $cache:expr, $key:expr, $arg1:expr, $arg2:expr) => { ... };
    ($f:ident, $cache:expr, $key:expr, $arg1:expr, $arg2:expr,) => { ... };
    ($f:ident, $cache:expr, $key:expr, $arg1:expr, $arg2:expr, $arg3:expr) => { ... };
    ($f:ident, $cache:expr, $key:expr, $arg1:expr, $arg2:expr, $arg3:expr,) => { ... };
    ($f:ident, $cache:expr, $key:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr) => { ... };
    ($f:ident, $cache:expr, $key:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr,) => { ... };
    ($f:ident, $cache:expr, $key:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr) => { ... };
    ($f:ident, $cache:expr, $key:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr) => { ... };
}
Expand description

exteand to code that interacts with memo cache, that order of args:

memo1_call_by!($f, $memo_caches, $key, $args...)

for example:

memo1_call_by!(comp_task, memo_caches.to_owned(), task.id.to_owned(), &states.pick(&task.id), task)?

its expanding result would be like:

internal_memof1_call_by(
  memo_caches.to_owned(),
  comp_task as usize,
  task.id.to_owned(),
  vec![cast_into_json(states.pick(&task.id)), cast_into_json(task)],
  move || comp_task(m.to_owned(), &states.pick(&task.id), task),
)