[][src]Function idata::tc::tail_call

pub fn tail_call<T, R, F>(seed: T, recursive_function: F) -> R where
    F: Fn(T) -> TailCall<T, R>, 

Function to simulate TCO. See example

  extern crate idata;
  use idata::tc::*;

  fn main() {
       
       let (sum, _) = tail_call((0, 0), |(acc, counter)| {
           if counter < 101 {
               TailCall::Call((acc + counter, counter + 1))
           } else {
               TailCall::Return((acc, counter))
           }
       });

       assert!(sum == 5050);
  }