and_then先ほどはmap()を、チェイン構文を用いてmatch文を単純化する物として説明しました。Option<T>を返す関数に対してのmap()の使用はネストしたOption<Option<T>>を生じさせます。複数の関数呼び出しをチェインさせることは混乱を招く場合があります。そんな時こそand_then()の出番です。他の言語ではflatmapと呼ばれることもあります。and_then()は引数として与えられた関数にラップされた値を渡しますが、その値がNoneだった場合はNoneを返します。以下の例ではcookable_v2()はOption<Food>を返すため、and_then()ではなくmap()を使用すると最終的にOption<Option<Food>>になります。これはeat()には不適切な型です。Bleu)のレシピも持っていない。料理を作るためには、材料とレシピの両方が必要。ロジックの流れを`match`のチェインで表す。`and_then()`を用いることで、同じことをよりコンパクトに表現できる。Option::and_then()。