问题描述
我在Rust CSV板条箱的教程页面上遵循一些代码示例,而该教程没有解释其工作原理:
type Record = HashMap<String,String>;
fn csv_to_record_table() -> Result<Vec<Record>,Box<dyn Error>> {
let mut rdr = csv::Reader::from_path(r"h:\code\rust\csvtutorial\uspop.csv")?;
let mut sheet = Vec::<Record>::new();
for result in rdr.deserialize() {
let record = result?;
sheet.push(record);
}
Ok(sheet)
}
我的代码有效,因此不需要修复,但是我想了解的是rdr.deserialize()
如何推断出我想要的类型是HashMap<String,String>
。我从文档中得知,如果您将其传递给哈希表,则它将使用列名作为键,并使用字段数据作为值。
我不明白的是rdr.deserialize()
如何知道这就是我在没有将我改写为rdr.deserialize::<Record>()
的情况下要做的。这是Rust的功能吗?还是这是Serde特有的?它怎么还知道我不是要给它一个Vec<Record>
?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)