はじめに
この実験では、Rust コードのエラーを処理するために使用できるパニック戦略オプション abort と unwind について検討します。
注: 実験でファイル名が指定されていない場合は、好きなファイル名を使用できます。たとえば、
main.rsを使用して、rustc main.rs &&./mainでコンパイルして実行できます。
abort と unwind
前のセクションでは、エラーハンドリングメカニズム panic を説明しました。異なるコードパスは、panic 設定に基づいて条件付きでコンパイルできます。利用可能な現在の値は、unwind と abort です。
以前のレモネードの例を基に、明示的にパニック戦略を使用して異なるコード行を実行します。
fn drink(beverage: &str) {
// 糖分多い飲み物はあまり飲んではいけません。
if beverage == "lemonade" {
if cfg!(panic="abort"){ println!("This is not your party. Run!!!!");}
else{ println!("Spit it out!!!!");}
}
else{ println!("Some refreshing {} is all I need.", beverage); }
}
fn main() {
drink("water");
drink("lemonade");
}
ここに、drink() を書き直して明示的に unwind キーワードを使用する別の例があります。
#[cfg(panic = "unwind")]
fn ah(){ println!("Spit it out!!!!");}
#[cfg(not(panic="unwind"))]
fn ah(){ println!("This is not your party. Run!!!!");}
fn drink(beverage: &str){
if beverage == "lemonade"{ ah();}
else{println!("Some refreshing {} is all I need.", beverage);}
}
fn main() {
drink("water");
drink("lemonade");
}
パニック戦略は、コマンドラインから abort または unwind を使用して設定できます。
rustc lemonade.rs -C panic=abort
まとめ
おめでとうございます!あなたは Abort と Unwind の実験を完了しました。あなたの技術を向上させるために、LabEx でさらに多くの実験を行って練習してください。