cf_quick_scanf_like_input/
lib.rs

1use std::io::{self, Read, Write};
2
3macro_rules! read_input_lines {
4    ($buf:ident) => {
5	{
6	    let mut stdin = io::stdin();
7	    stdin.read_to_string(&mut $buf);
8	    &$buf.lines().collect::<Vec<_>>()
9	}
10    }
11}
12
13macro_rules! read_line_of_vars {
14    ($type:ty, $lines:ident, $($var:ident),+) => {
15	{
16	    let (line, rest) = $lines.split_first().unwrap();
17	    $lines = rest;
18	    let parsed = line.trim().split_whitespace().map(
19		|x| {
20		    x.parse::<$type>().unwrap()
21		}
22	    )
23		.collect::<Vec<$type>>();
24	    let parsed = &parsed[..];
25	    $(
26		match parsed.split_first() {
27		    None => {
28			$var = parsed[0];
29		    },
30		    Some((value, parsed)) => {
31			$var = *value;
32		    }
33		}
34	    );+;
35	    {(
36		$(
37		    $var
38		),+
39	    )}
40	}
41    }
42}