#input #read #scan #macro #io-read #io

scanio

简单控制台输入宏,目标是实现到标准库中

1 个不稳定版本

0.1.0 2021 年 11 月 15 日

#2157 in Rust 模式

MIT 许可证

9KB
222

scanio

RFC: https://github.com/rust-lang/rfcs/pull/3183

这个包是测试/正在进行中的某些简单宏的实现,用于通用文本输入扫描(与 print 宏系列一起)。

此包当前实现了四个宏,scan!try_scan!read!try_read!

这些宏的实现是实验性的。

scan! 使用方法

#[macro_use]
extern crate scanio;

fn main() {
    let name: String;
    let age: u8;
    
    // reads a String into `name` and a u8 into `age`
    // if it fails, it will simply assign Default::default()
    scan!("{} {}", name, age);
    
    println!("{} of age {}", name, age);
}

try_scan! 使用方法

#[macro_use]
extern crate scanio;

fn main() {
    // returns a Result<(String, u8), ()>, which we unwrap
    let person = try_scan!("{} {}", String, u8).expect("Invalid input!");
    
    // ideally you should `match` on the result but this is an example so :shrug:
    
    println!("{} of age {}", person.0, person.1);
}

read!try_read! 宏的工作方式完全相同,但是它们的第一个参数必须是一个实现了 std::io::Read 特性的对象的可变引用,例如 std::io::stdin() 或一个 File

无运行时依赖