cf_quick_scanf_like_input/
lib.rs1use 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}