Rust

Lifetimes

Lifetime アノテーション、省略規則、'static lifetime、struct の lifetime、lifetime bounds

20 面接問題·
Mid-Level
1

Rust における lifetime の主な目的は何ですか?

回答

Lifetime により、compiler はすべての reference が使用中ずっと有効であることを検証できます。reference が参照するデータより長く生存しないことを保証し、dangling reference を防ぎます。borrow checker は lifetime を使用してコンパイル時にメモリ安全性を検証し、実行時のオーバーヘッドはありません。

2

reference に lifetime を注釈するにはどの構文を使いますか?

回答

Lifetime はアポストロフィに続けて名前を付けて注釈します。通常は 'a のような小文字を使います。&'a T という構文は lifetime 'a を持つ T への reference を意味します。慣例として generic な lifetime には 'a, 'b, 'c を使いますが、アポストロフィの後には任意の有効な識別子を使用できます。

3

Rust において 'static lifetime は何を意味しますか?

回答

'static lifetime は、reference がプログラムの実行期間全体にわたって生存できることを示します。"hello" のような string literal は binary に埋め込まれているため、自動的に 'static lifetime を持ちます。グローバル定数や Box::leak で作成された値もこの lifetime を持ちます。注意:'static は値がプログラム開始時から存在していたという意味ではなく、終了まで生存できるという意味です。

4

Rust の compiler は lifetime の省略規則をいくつ自動的に適用しますか?

5

なぜ関数 fn longest(x: &str, y: &str) -> &str はコンパイルできないのですか?

+17 面接問題

次の面接に向けてRustをマスター

すべての問題、flashcards、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める