mic 0.1.0

Facilitates answering to competitive programming problems.
Documentation
use mic::{answer, solve};
use std::sync::atomic::{self, AtomicBool};

#[test]
fn answer() {
    let _: () = main();

    #[answer]
    fn main() -> &'static str {
        return if VISITED.swap(true, atomic::Ordering::SeqCst) {
            ""
        } else {
            main()
        };
        static VISITED: AtomicBool = AtomicBool::new(false);
    }
}

#[test]
fn solve() {
    assert_eq!("", solve(false));

    #[solve]
    fn solve(visited: bool) -> &'static str {
        if visited {
            ""
        } else {
            solve(true)
        }
    }
}