🚀

Rustのunwrapと?の違い

2023/04/04に公開

概要

unwrap?は、Rustにおいてエラーハンドリングに使用される2つの異なる方法です。

unwrap

unwrapは、Option型やResult型の値がSomeOkであることを前提として、値を取り出します。

もしNoneErrだった場合は、panic!マクロが呼ばれてプログラムがクラッシュします。

つまり、unwrapはエラーハンドリングではなく、プログラムの実行中に予期しないエラーが発生した場合にのみ使用するべきです。

?

一方、?は、Result型の値を扱う際に使用される演算子で、エラーハンドリングに使用されます。

?演算子は、左側の式がOkの場合は値を返し、Errの場合はそのErrを呼び出し元に返します。

つまり、?演算子は、エラーが発生した場合にそのエラーを呼び出し元に伝えることができます。

?演算子は、Result型の値を安全に取り出すための方法であり、unwrapよりも安全で、より堅牢なコードを書くことができる認識です。

Discussion