>>525
こう書くとresultがErrの時に返せずここでpanicになってしまう

 let val = result.unwrap();
 f(val)

そのためpanicしてもいいとか絶対にErrとならない特殊な場合を除けば
unwrapを用いてはダメでmapを使ってこのように書くんだよ

 result.map(|val| f(val))

ここで本当に関数fを呼ぶだけならresult.map(f)と簡略化できるけど
f(val)の部分は式やブロックの可能性もあるので簡略化せずに進めるね

これは以下と同等でErr(err)の時に保持してくれている

 match result {
  Ok(val) => Ok(f(val)),
  Err(err) => Err(err),
 }

ちなみにf(val)もResultを返すときは
mapの代わりにand_thenがある

 result.and_then(|val| f(val))

つまり以下の二つは同等

 result.map(|val| f(val))
 result.and_then(|val| Ok(f(val)))

この場合はもちろん簡素なmapを用いるべき