下記の様なコードがあった場合、エラーケースでは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),
    }

}