はじめに
この実験では、Rustにおける省略(elision)の概念を調べます。ここでは、バローチェッカーが一般的なライフタイムパターンの省略を許可することで、読みやすさを向上させ、入力を削減します。
注: 実験でファイル名が指定されていない場合は、好きなファイル名を使用できます。たとえば、
main.rs
を使用して、rustc main.rs &&./main
でコンパイルして実行できます。
This tutorial is from open-source community. Access the source code
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Rustにおける省略(elision)の概念を調べます。ここでは、バローチェッカーが一般的なライフタイムパターンの省略を許可することで、読みやすさを向上させ、入力を削減します。
注: 実験でファイル名が指定されていない場合は、好きなファイル名を使用できます。たとえば、
main.rs
を使用して、rustc main.rs &&./main
でコンパイルして実行できます。
一部のライフタイムパターンは非常に一般的であるため、バローチェッカーは入力を省略して読みやすさを向上させるためにそれらを省略することを許可します。これは省略(elision)と呼ばれます。省略は、これらのパターンが一般的であるためにのみRustに存在します。
次のコードは、省略のいくつかの例を示しています。省略のより包括的な説明については、本のライフタイム省略を参照してください。
// `elided_input` と `annotated_input` は本質的に同じ署名を持っています
// なぜなら、`elided_input` のライフタイムはコンパイラによって推論されるからです:
fn elided_input(x: &i32) {
println!("`elided_input`: {}", x);
}
fn annotated_input<'a>(x: &'a i32) {
println!("`annotated_input`: {}", x);
}
// 同様に、`elided_pass` と `annotated_pass` は同じ署名を持っています
// なぜなら、ライフタイムが暗黙的に `elided_pass` に追加されるからです:
fn elided_pass(x: &i32) -> &i32 { x }
fn annotated_pass<'a>(x: &'a i32) -> &'a i32 { x }
fn main() {
let x = 3;
elided_input(&x);
annotated_input(&x);
println!("`elided_pass`: {}", elided_pass(&x));
println!("`annotated_pass`: {}", annotated_pass(&x));
}
おめでとうございます!あなたは省略(Elision)の実験を完了しました。あなたの技術を向上させるために、LabExでさらに多くの実験を行って練習してください。