Rustのmapなどで繋げて記載した場合のエラーハンドリングについて
下記の様なコードがあった場合、エラーケースではsplitでエラーが発生します。
mapなどを繋げて書いた際の途中でエラーが発生する場合、
Rustでうまくエラーハンドリングするにはどの様に書くのが良いですか
use std::collections::HashMap;
fn to_hash(kv: &str) -> Result< HashMap<String,String>, String> {
let _hashmap = kv
.split(',')
.map(|kv| kv.split('='))
.map(|mut kv| (kv.next().unwrap().into(), kv.next().unwrap().into()))
.collect::<HashMap<String, String>>();
Ok(_hashmap)
// Err handling?
}
fn main() {
// Ok.
let kv1 = "key1=value1,key2=value2,key3=value3";
match to_hash(kv1) {
Ok(n) => println!("{:?}",n),
Err(e) => println!("{:?}",e),
}
// Err.
let kv2 = "key1=value1,key2=value2,key3=value3,";
match to_hash(kv2) {
Ok(n) => println!("{:?}",n),
Err(e) => println!("{:?}",e),
}
}