dmoj 0.1.5

A Rust crate for providing helpful methods in online judging
Documentation
use std::io::{self, Write, BufWriter, Stdout};
use libc;
use sync::NotThreadSafe;

lazy_static! {
    static ref STDOUT: NotThreadSafe<BufWriter<Stdout>> = {
        extern "C" fn flush_stdout_at_exit() {
            flush();
        }

        unsafe {
            libc::atexit(flush_stdout_at_exit);
        }

        NotThreadSafe::new(BufWriter::new(io::stdout()))
    };
}

pub fn stdout() -> &'static mut BufWriter<Stdout> {
    unsafe { STDOUT.get().as_mut().unwrap() }
}

pub fn flush() {
    stdout().flush().unwrap();
}