🤖
rustのmainで?を使う
csvをreadする練習をしたくてコードを書いたが、公式のexample通りに書くと、main関数内でエラーを吐く。
fn main(){
let mut rdr = Reader::from_path("../data/test_data.csv")?;
for result in rdr.records() {
let record = result?;
println!("{:?}", record);
}
}
エラー内容としては
this function should return `Result` or `Option` to accept `?`
らしいので戻り値がResultもしくはOption型でないと?は使っちゃいけない。
なのでこう書く
fn main()-> Result<(), Box<Error>>{
let mut rdr = Reader::from_path("../data/test_data.csv")?;
for result in rdr.records() {
let record = result?;
println!("{:?}", record);
}
Ok(())
}
これで動くが、まだ?をここまでして使う旨みがわかってない。
エラー処理が簡略化できるとかなんとか。
参考文献
Discussion