tt-num 0.1.0

tt-macros for various numerical operations
Documentation
#![feature(use_extern_macros)]
#![recursion_limit="512"]

extern crate tt_call;
extern crate tt_num;
use tt_call::{tt_call, tt_replace, tt_true};
use tt_num::tt_atoi;

macro_rules! times {
    ([$($n:tt)*] $code:expr) => {
        tt_call! {
            macro = [{ private_times }]
            num = [{ $($n)* }]
            code = [{ $code }]
        }
    }
}

macro_rules! private_times {
    {
        $caller:tt
        num = [{ $($n:tt)* }]
        code = [{ $code:expr }]
    } => {
        tt_call! {
            macro = [{ tt_atoi }]
            input = [{ $($n)* }]
            acc = [{ }]
            ~~> tt_replace! {
                $caller
                condition = [{ tt_true }]
                replace_with = [{ $code }]
            }
        }
    }
}

fn main() {
    let mut i = 0;
    times!([4 2] {
        i += 1;
    });
    println!("i = {}", i);
    assert_eq!(i, 42);
}