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.
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),
);
}
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.
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;
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"] }
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
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.