Fooling around with rust macros

50 points st4s1k
macro_rules! c4 {
    (
        for (
            $($init:stmt),+;
            $loop_condition:expr;
            $($iter:stmt),+
        ) $code_block:block
    ) => {
        {
            $($init)+
            while $loop_condition {
                $code_block
                $($iter)+
            }
        }
    };
}

fn main() {
    c4! {
        for (let mut i = 1; i <= 10; i += 1) {
            println!("9 * {:<2} = {}{}", i, i - 1, 10 - i);
        }
    }
    c4! {
        for (
            let (mut i, mut j) = (0, 0),
            let mut s = "some dummy word".to_string();
            i * j <= s.len();
            i += 1,
            s = format!("{} {} {}", &s, i, j)
        ) {
            j += 1;
            println!("i: {}; j: {}; s: {}", i, j, s);
        }
    }
}

improved: st4s1k/rust-c4: Rust macro for C-like for-loop (github.com)