#competitive #io #input


Input library for competitive programming

4 releases

✓ Uses Rust 2018 edition

0.2.1 Jul 8, 2019
0.2.0 Jul 8, 2019
0.1.1 Aug 5, 2018
0.1.0 Aug 4, 2018

#85 in Filesystem

22 downloads per month


218 lines


crates.io docs.rs

Input library for competitive programming.

Example: weighted graph as edge list

extern crate comp_input;

fn main() {
    input! {
        n, m: usize,
        edges: [(usize1, usize1, u64); m],

The variables n, m and edges then exist as local variables in scope.

List of input fragments

Fragment Description
u8, u16, u32, u64, usize Unsigned integer (base 10)
i8, i16, i32, i64, isize Signed integer (base 10, optional +/- prefix)
usize1 Like usize, but subtract 1 from the result (useful for 1-based input formats)
char A single character
String A sequence of non-ASCII-whitespace characters
(T1, T2), (T1, T2, T3), ... Heterogeneous tuple of other input fragments, read in order
[<T>; <n: expr>] n items parsed against T, returned as Vec
[<T>; const <n>] n items parsed against T, in an array. n must be compile-time constant


  • Allow arbitrary parse functions
  • Branching
  • Loops (e.g. parse until -1)