Rust でマッチ内のエラーを処理するにはどうすればよいですか?

okwaves2024-01-25  8

閉まっている。この質問は再現できないか、タイプミスが原因です。現在回答を受け付けておりません。

この質問はタイプミスまたは再現できない問題によって発生しました。同様の質問がここで取り上げられている可能性がありますが、この質問は将来の読者を助ける可能性が低い方法で解決されました。

3 年前

に閉鎖されました。

この質問を改善してください

これがコードです。一致させたいのは次のとおりです:

enum Option {
    Aoption,
    Boption,
    KeyError,
}

let key = "foo";

let key = match key {
    "a" => Aoption
    "b" => Boption
     _ => KeyError    // how can I throw an error here?
};

// unclear to me if I can somehow wrap the enum in a Result or Some?
key.unwrap();

// can I use a Result somehow? If so, how do I wrap my enum or string in a result?
Ok(s) => s,
Err(_) => Err

「エラーをスローする」とはどういう意味ですか。つまり、呼び出し元のコードに何か問題が発生したことを伝えるということですか?結果<オプション、エラー>はい、それはできます。そうしないと、何かが本当に手に負えなくなったときにコードがパニックになる可能性があります。

– Félix アドリエル・ギャニオン・グルニエ

2020 年 9 月 4 日 20:10

はい、キーが「a」でない場合は問題があるため、プログラムを終了したいと思います。または「b」。

– カメ

2020 年 9 月 4 日 20:17

1

使用パニック! ?

– Öマー エルデン

2020 年 9 月 4 日 20:39

ありがとう。私の問題は、パニックをサポートする構造で文字列をラップする方法がわからないことです。

– カメ

2020 年 9 月 4 日 21:06

エラー処理に関する章を参照して、質問を具体的に更新してください。そこには、panic() と unwrap() の使用法を示すいくつかの例があり、どちらもアプリケーションを終了させる可能性があります。必要に応じてイオンを使用します。

– Félix アドリエル・ギャニオン・グルニエ

2020 年 9 月 4 日 21:20



------------------------

マッチ内の Rust でエラーを処理するにはどうすればよいですか?

結果、オプションを返すか、パニック状態になります。

通常、列挙型には有効な状態のみが含まれ、それが Result または Option でラップされます。ただし、列挙型に KeyError のようなエラーを含めることは確かに可能です。

パニック! (!) を返さないため、可能です:

match x {
    0 => A,
    1 => B,
    _ => panic!(),
}

2

1

ありがとう。パニックになるとは思いつきませんでした!戻り値の型が A や B とは異なると考えたためです。

– カメ

2020 年 9 月 6 日 14:57

どういたしまして!そう、それが の魔法なのです!

と入力します。 – どんぐり

2020 年 9 月 6 日 16:20

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。