我尝试复制this,但是复制ReaderBuilder::new().from_path
而不是csv::Reader::from_reader
因此,我编写了如下代码:
extern crate csv;
extern crate serde;
#[macro_use]
extern crate serde_derive;
use std::error::Error;
use std::io;
use std::process;
use csv::ReaderBuilder;
#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
struct Record {
latitude: f64,
longitude: f64,
population: Option<u64>,
city: String,
state: String,
}
const DATA: &'static str = include_str!("../data/uspop.csv");
fn run() -> Result<(), Box<Error>> {
let mut rdr = ReaderBuilder::new().from_path(DATA);
for result in rdr.records() {
let record = result?;
println!("{:?}", record);
}
/* let mut rdr = csv::Reader::from_reader(io::stdin());
for result in rdr.deserialize() {
let record: Record = result?;
println!("{:?}", record);
// Try this if you don't like each record smushed on one line:
// println!("{:#?}", record);
} */
Ok(())
}
fn main() {
if let Err(err) = run() {
println!("{}", err);
process::exit(1);
}
}
但是我收到以下错误,从中我了解到应用程序没有看到我的csv文件:
rror [E0599]:在当前范围内找不到类型为
records
的名为std::result::Result<csv::Reader<std::fs::File>, csv::Error>
的方法 -> src / main.rs:26:27 | 26 |导致rdr.records(){ | ^^^^^^^^
我试图将我的uspop.csv
文件放在3个位置,但看起来它们都不起作用:
1 /在根的Cargo.toml
旁边
2 /在来源中,main.rs
旁边
3 /在单独的文件夹root/data/uspop.csv
但是没有人看到,我在这里犯了什么错误!