「Rust」の言語機能として、「メモリ管理」「コンパイラチェック」「並列処理」「エラー処理」について紹介します。

「Rust」の言語機能

「Rust」の言語機能として、「メモリ管理」「コンパイラチェック」「並列処理」「エラー処理」について紹介します。

■関連する比較ページ

「Rust」の言語機能

■メモリ管理

メモリ自動管理

Rustのメモリ管理では、GC(ガベージコレクション)は存在せず、メモリ管理は自動で行われます。

メモリ管理の自動化が徹底されているため、「明示的なメモリ解放」などは、ほぼ不要となっています。

メモリ安全性

Rustでは、強力な型システムとリソース管理の仕組みにより、メモリセーフな安全性が保証されています。メモリは、コンパイル時にコンパイラがチェックする一連の規則を持つ所有権システムによって管理されます。

「ヌルポインタ」「不正なメモリ域を指すポインタ」「初期化されてない変数へのアクセス」は許容されません。コンパイル時に安全にチェックされ、コンパイルエラーになります。

データ値は、フォームの固定されたセットを通してのみ初期化することができ、そのすべてが既に入力が初期化されている必要があります。

メモリ管理機能「スマートポインタ」

「ポインタ」とは、メモリ内のアドレスが含まれている変数のための一般的な概念です。このポインタは「データ参照用」として利用されます。

一方、Rustの「スマートポインタ」は、標準ライブラリで定義されています。データ参照用として動作するのに加えて、追加のメタデータと機能を持つデータ構造であり、「ポイントが指すデータを所有」しています。

■コンパイラチェック

Rustコンパイラのチェックは、コンパイル時の安全性検査を行い、並行性バグを含む不具合箇所のチェックを行い、すべてのデータ競合を排除します。

コンパイル基盤としてMIRとLLVMを用いており、実行時速度性能はC言語と同等程度とされています。

Rustコンパイラは、機能追加やリファクタリングによる安定性保証をサポートするゲートキーパーとして機能します。開発チームは、Rustコンパイラを通した開発を行うことで、バグ追跡時間を減少でき、開発生産性を向上できます。

■並列処理

プログラムの異なる部分が独立して実行される「並行プログラミング」、および、プログラムの異なる部分が同時に実行される「並列プログラミング」は、多くのコンピュータが複数プロセッサを利用するにつれてますます重要になってきています。

Rustにおいて「並列プログラミングを安全かつ効率的に処理すること」は、Rustの主要目標の1つであり、並列処理を導入することは比較的低リスクの操作となります。

Rustは、状況や要件に適した方法で問題をモデル化するためのさまざまなツールを提供しています。

■エラー処理

Rustは、エラーについて、「回復可能なエラー(Result)」と「回復不可能なエラー(panic)」の2つのカテゴリに分類します。

「回復可能なエラー(Result)」の例としては、「ファイルが見つからない」などがあり、問題をユーザーに報告して操作を再試行してもらうことでエラー回復を試みます。

「回復不可能なエラー(panic)」の場合は、実行を停止する処理になります。

Rust最新TOPICS

【OSS】プログラミング言語「Rust 1.24」リリース---コードリフォーマットツール「rustfmt」、インクリメンタルコンパイル機能(2018年02月20日 11:03)

MozillaのRust開発チームは、2月15日、 プログラミング言語「Rust 1.24」をリリースした。 【Rustとは】 マルチパラダイム言語 https://www.ossnews.jp/oss_info/Rust 【1.24のポイント】 ・Rustコードリフォーマットツール「rustfmt」(プレビュー版)を導入 ・インクリメンタルコンパイル機能がデフォルトで有効 ...

Rust最新CLOSEUPコラム

イベント情報

セミナー講演資料

無料資料プレゼント

2021/03/04 セキュリティDAYS Keyspider資料

講演資料を見るには、 プライバシーポリシーに同意して、送付先メールアドレスをご入力しご請求ください。

またご入力いただきました情報は、当該資料の作成・提供企業とも共有させていただき、当社及び各社のサービス、製品、セミナー、イベントなどのご案内に使用させていただきます。

本資料を見るには次の画面でアンケートに回答していただく必要があります。



セミナー講演資料公開中

リアルタイム性の高いIoTの課題とは?スマートシティを支えるMQTT ~IoTメッセージングプラットフォームを活用し、セキュリティ確保や通信到達保障を簡単に実現~

エンジニアにとって「情報発信」は重要なのか? ~テックピット DEVELOPERS RESKILLING CONFERENCE クロージングセッション~

ローコード/ノーコードのツール比較と内製化 ~ユーザー企業は、ノーコード/ローコードで内製化できるのか?~

  • オープソース書籍(サイド)
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter