Trying to read COVID-19 data and putting it in a struct, the data is here:
https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv
showing cases recorded every day.
I tried the below:
[dependencies]
serde = { version = "1.0.105", features = ["derive"] }
reqwest = { version = "0.10", features = ["json"] }
tokio = { version = "0.2", features = ["full"] }
csv = "1.1.3"
And
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize, Debug)]
struct Record {
Province: str,
Country: str,
Lat: f64,
Long: f64,
d001: i32, d002: i32, d003: i32, d004: i32, d005: i32, d006: i32, d007: i32, d008: i32, d009: i32,
d010: i32, d011: i32, d012: i32, d013: i32, d014: i32, d015: i32, d016: i32, d017: i32, d018: i32,
d019: i32, d020: i32, d021: i32, d022: i32, d023: i32, d024: i32, d025: i32, d026: i32, d027: i32,
d028: i32, d029: i32, d030: i32, d031: i32, d032: i32, d033: i32, d034: i32, d035: i32, d036: i32,
d037: i32, d038: i32, d039: i32,
d040: i32, d041: i32, d042: i32, d043: i32, d044: i32, d045: i32, d046: i32, d047: i32, d048: i32,
d049: i32, d050: i32, d051: i32, d052: i32, d053: i32, d054: i32, d055: i32, d056: i32, d057: i32,
d058: i32, d059: i32, d060: i32,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let res = reqwest::get("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv").await?;
println!("Status: {}", res.status());
let body = res.text().await?;
// println!("Body:\n\n{}", body);
let mut reader = csv::Reader::from_reader(body.as_bytes());
for result in reader.deserialize() {
// The iterator yields Result<StringRecord, Error>, so we check the
// error here.
let record: Record = result?;
println!("{:?}", record);
}
Ok(())
}
But when I compiled it, I got the below error:
error: There are multiple `csv` packages in your project, and the specification `csv` is ambiguous.
Please re-run this command with `-p <spec>` where `<spec>` is one of the following:
csv:0.1.0
csv:1.1.3
Process finished with exit code 101