命令行参数
今天来简单说一说Rust中如何获取程序的入口参数,以及如何读取标准输入的问题。
创建测试项目
cargo new hello-cli
编辑src/main.rs
,其中通过静态的std::env::args()
函数调用得到程序的入口参数:
fn main() {
use std::env::Args;
let args: Args = std::env::args();
println!("{:?}", args);
for arg in args {
println!("{:?}", arg);
}
}
运行测试
可以看到,通过for arg in args
遍历程序入口参数,第一个参数就是程序的路径。
标准输入输出
标准输入
调用std::io::stdin()
得到的Stdin
关联到程序的标准输入设备。
Stdin
中read_line()
方法,一次从标准输入读取一行内容,包括换行符。
Stdin
中实现了Read trait
中的read_to_string()
方法。调用该方法会一直读到文件末尾(EOF
)才结束。
要在CLI命令行
输入EOF
,Windows
系统是CTRL+Z
,Linux是CTRL+D
。
标准输出
可通过println!
宏,将格式化后的字符串输出到标准输出设备。
// 调用标准输入读取输入信息
use std::io::Read;
use std::io::Stdin;
let mut buf = String::new();
let std_in: Stdin = std::io::stdin();
while std_in.read_line(&mut buf).is_ok() {
if "exit\r\n" == buf {
println!("Bye bye");
break;
} else {
print!("{}", buf);
buf.clear();
}
}