rustのResultエラー処理方法は何ですか?

Rustには、エラーが発生する可能性のある操作を処理するための一つの方法としてResult型が存在します。Result型の定義は以下の通りです。

enum Result<T, E> {
    Ok(T),
    Err(E),
}

Tは成功した操作の戻り値の型を表し、Eは失敗した操作の戻り値のエラーの型を表します。

Result型を使用したエラー処理には、主に2つの方法があります:match式を使用する方法と?演算子を使用する方法。

  1. 試合
fn read_file() -> Result<String, io::Error> {
    let file = File::open("file.txt");

    match file {
        Ok(mut f) => {
            let mut contents = String::new();
            f.read_to_string(&mut contents)?;
            Ok(contents)
        }
        Err(e) => Err(e),
    }
}

上記の例では、read_file関数がファイルを開き、その内容を文字列として読み取ろうとしています。ファイルのオープンと読み取りが成功した場合はOk(contents)を返し、失敗した場合はErr(e)を返します。

  1. 彼は自分の意見をはっきりと述べた。
fn read_file() -> Result<String, io::Error> {
    let mut file = File::open("file.txt")?;
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;
    Ok(contents)
}

上記の例では、?演算子を使用して、match式でのOkとErrのブランチを置き換えることができます。操作が成功した場合は、後続の文が実行されます。操作が失敗した場合は、エラーが直接返されます。

関数の戻り値の型がResult型であることと、関数内のすべてのエラーを処理するために?演算子を使用する必要がある。

Rustでは、エラーを処理するための一般的な2つの方法があり、開発者は具体的な要件に応じて適切な方法を選択できます。

bannerAds