Rust

Unsafe Rust

Unsafe ブロック、raw ポインタ(*const T、*mut T)、FFI、unsafe トレイト、Undefined Behavior (UB)、safety 不変条件

20 面接問題·
Senior
1

Rust で unsafe モードのスーパーパワーを有効にするキーワードはどれですか?

回答

unsafe キーワードは、safe Rust で禁止されている 5 つの機能を解放します。raw ポインタのデリファレンス、unsafe 関数の呼び出し、mutable な static 変数へのアクセス、unsafe トレイトの実装、そして union フィールドへのアクセスです。このブロックは、開発者が memory safety を保証する責任を負うことをコンパイラに伝えます。

2

unsafe コードは safe Rust と比べて、いくつの追加機能を解放しますか?

回答

unsafe モードは正確に5つの機能を解放します: raw pointer のデリファレンス、unsafe な関数やメソッドの呼び出し、可変な static 変数へのアクセスや変更、unsafe な trait の実装、そして union のフィールドへのアクセスです。これら5つの操作が safe と unsafe Rust の唯一の違いです。

3

Rust で変数への immutable な raw pointer を作成する正しい構文はどれですか?

回答

immutable な raw pointer を作成する構文は let ptr = &x as *const T です。*const T 型は immutable な raw pointer を表します。raw pointer の作成は safe であり、deref のみが unsafe ブロックを必要とします。let ptr: *const T = &x として暗黙の型強制を使うこともできます。

4

Rust における *const T と *mut T の違いは何ですか?

5

なぜ safe Rust では raw pointer の作成は許可されているのに、デリファレンスは許可されていないのですか?

+17 面接問題

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

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

無料で始める