#jam #boilerplate #code

gcj-helper

A helper library for Google Code Jam solutions

5 releases (breaking)

Uses old Rust 2015

0.5.0 Apr 6, 2017
0.4.0 Mar 28, 2017
0.3.0 Mar 27, 2017
0.2.0 Mar 27, 2017
0.1.1 Mar 26, 2017

#8 in #jam

Apache-2.0/MIT

14KB
191 lines

gcj-helper

Travis AppVeyor Crates.io Docs.rs

gcj-helper is a Rust library for writing Google Code Jam solutions. It handles the usual boilerplate (opening files, reading/writing data, etc.), and optionally supports test case parallelisation.

Example

extern crate gcj_helper;

use gcj_helper::TestEngine;

fn main() {
    TestEngine::new("./foo.in", "./foo.out").run(
        |input| input.read_next_line().to_owned(),
        |data| format!(" {}\n", data),
    );
}

Usage

Via cargo new --template

For brand-new crates, the quickest way to get started is to use a Cargo template:

cargo new --template https://github.com/FaultyRAM/gcj-template-rust.git foobar

This creates a new crate named foobar that is set up to use gcj-helper. No extra work is needed; just open src/main.rs and start writing your solution.

By hand

You can also manually add gcj-helper to your crate, though doing so is slower than using cargo new --template. To do so, add this line to your [dependencies] in Cargo.toml:

gcj-helper = "0.5"

And add this line to your crate root:

extern crate gcj_helper;

Test case parallelisation

By default, gcj-helper executes each test case in a single thread, one by one. If the parallel feature is enabled, gcj-helper will attempt to execute multiple test cases simultaneously, but this relies on third-party dependencies (currently rayon), resulting in slower build times. If you'd like to enable this feature, open Cargo.toml and replace the following line:

gcj-helper = "0.5"

With this line:

gcj-helper = { version = "0.5", features = ["parallel"] }

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~0–470KB