3 个版本
0.1.2 | 2023 年 10 月 30 日 |
---|---|
0.1.1 | 2023 年 10 月 30 日 |
0.1.0 | 2023 年 10 月 30 日 |
#20 in #competitive-programming
10KB
139 行代码(不包括注释)
readput
为 Rust 竞赛编程提供快速且简单的 stdin 输入解析。
用法
注意: 输入可以在同一行,也可以不在同一行,这没有关系。它们由空格或换行符分隔。多余的输入将缓存到下一次 read()
调用。
创建 Scanner
创建一个新的 Scanner
。目前只支持 ASCII。
use readput::AsciiScanner;
use readput::Scanner;
let mut cin = AsciiScanner::new();
读取单个值
读取单个值。对于非 std 类型,在使用 impl_cin_type!(type)
之前或使用 cin.read_cust_s()
之前,它们也必须实现 FromStr 和 Debug。
let v: i128 = cin.read();
读取元组
读取具有可变大小和自定义类型的元组。 (适用于所有实现了 FromStr
和 Debug
的类型)
let (a, b, c): (String, i128, u32) = cin.read();
let (d, e): (i32, i32) = cin.read();
读取元组向量
读取元组向量。 3 是要读取的向量中的元组数量。 (适用于所有实现了 FromStr
和 Debug
的类型)
let vec: Vec<(u32, String)> = cin.read_vec(3);
读取单个值向量
读取单个值向量。 3 是要读取的元素数量。对于非 std 类型,在使用 impl_cin_type!(type)
之前或使用 cin.read_cust_v()
之前,它们也必须实现 FromStr 和 Debug。
let vec: Vec<u32> = cin.read_vec(3);
遍历输入
遍历输入。这将无限循环。 (阻塞,直到输入新输入) 对于非 std 类型,在使用之前必须实现 FromStr。
for (a, b) in cin.iter::<(String, u32)>() {
println!("{} {}", a, b);
}