A Rust crate for providing helpful methods in online judging.
Switch branches/tags
Nothing to show
Clone or download
Latest commit 634b65a Nov 7, 2016
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Implement char scanner Nov 8, 2016
.gitignore Initial commit Sep 12, 2016
.travis.yml
Cargo.toml Release v0.1.5 Nov 8, 2016
LICENSE
README.md Implement char scanner Nov 8, 2016

README.md

dmoj-rust Travis CI

A Rust crate for providing helpful methods in online judging.

Usage

#[macro_use] extern crate dmoj;

fn main() {
    println!("Hello, World!");
}

Provided macros

print!, println!

This crate provides print! and println! macros that shadow the prelude versions. These versions are about 10 times faster and fully API compatible, but sacrifice thread safety.

Example

#[macro_use] extern crate dmoj;

fn main() {
    print!("Hello, ");
    println!("World!");
}

flush!

Flushes the stdout buffer.

Example

#[macro_use] extern crate dmoj;

use std::thread;
use std::time::Duration;

fn main() {
    print!("Hello,");
    flush!();
    thread::sleep(Duration::from_secs(2));
    println!(" World!");
}

scan!

scan!(T) -> T;
scan!(T1, ..., Tn) -> (T1, ..., Tn);

A macro for scanning values from stdin. Currently, only scanning chars and integers is supported. Note that when scanning integers, the scanner will continue to read stdin until it finds something that looks like an integer. If the macro is called with multiple type arguments a tuple of the values will be returned, otherwise the value itself is returned.

Example

#[macro_use] extern crate dmoj;

fn main() {
    // For example, if stdin contains " 2020 \n  +4 test \n   -19xy" then

    print!("{:?}", scan!(u64));      // prints "2020", and
    print!("{:?}", scan!(i16, i16)); // prints "(4, -19)"
    print!("{:?}", scan!(char));     // prints "'x'"
    print!("{:?}", scan!(char));     // prints "'y'"
}