https://qiita.com/lo48576/items/34887794c146042aebf1#map_while-iteratort---t---optionu---iteratoru
Rust 1.57 で追加された Iterator::map_while 、公式ドキュメントでは「map と take_while の組み合わせ」と表現されてるけど……たぶん直観的には「None を無視して継続するのが filter_map で、 None で走査を中断するのが map_while」と記憶した方が良いです