[][src]Function recur_fn::deref

pub fn deref<Arg, Output, D: Deref>(
    d: D
) -> impl RecurFn<Arg, Output> where
    D::Target: RecurFn<Arg, Output>, 

Wraps a pointer that Deref to RecurFn to make it implement RecurFn.

use recur_fn::{RecurFn, recur_fn, deref};

let fact = recur_fn(|fact, n: u64| if n == 0 { 1 } else { n * fact(n - 1) });
let fact = deref(&fact);
assert_eq!(6, fact.call(3));
assert_eq!(3, fact.body(|_| 1, 3));