【发布时间】:2020-06-24 17:47:30
【问题描述】:
我正在尝试学习 Rust。我正在关注一本书online,它实现了unix程序cat。现在我试图读取作为cargo run file1.txt file2.txt 之类的参数传递的文件的内容,但程序出现了恐慌:
D:\rust\cat> cargo run .\src\test.txt
Compiling cat v0.1.0 (D:\rust\cat)
Finished dev [unoptimized + debuginfo] target(s) in 0.62s
Running `target\debug\cat.exe .\src\test.txt`
thread 'main' panicked at 'Box<Any>', src\main.rs:12:28
这是我的程序:
use std::env;
use std::fs::File;
use std::io;
use std::io::prelude::*;
fn main() {
let args: Vec<String> = env::args().collect();
if args.len() > 1 {
match read_file(&args) {
Ok(content) => println!("{}", content),
Err(reason) => panic!(reason),
}
}
}
fn read_file(filenames: &Vec<String>) -> Result<String, io::Error> {
let mut content = String::new();
for filename in filenames {
let mut file = File::open(filename)?;
file.read_to_string(&mut content)?;
}
Ok(content)
}
谁能解释我在这里缺少什么?
【问题讨论】:
-
不相关,但不需要收集迭代器:play.integer32.com/…
-
我不明白为什么会有这个消息,但你不应该自己恐慌,使用
unwrap或错误传播:play.integer32.com/… -
@Boiethios 谢谢!会尝试的。我用恐慌!正如本书使用的那样
标签: rust