Rust (プログラミング言語)
CargoはRust製ソフトウェアプロジェクトのCUIのビルドツールである。規定のファイル構成(ディレクトリ、設定ファイル、ソースファイル)のプロジェクトディレクトリで利用される。プロジェクトのビルド(コンパイル)、依存ライブラリのダウンロード、テスト、ドキュメント生成などをサポートする。通常はCargoを中心に開発を行えるように設計されているため、rustcコンパイラを直接呼び出すことは稀である。Cargoの依存ライブラリのダウンロード先はcrates.ioである。 サブコマンドは拡張可能で標準のコマンドの他、README.mdファイルの自動生成コマンドなどの拡張コマンドが存在する。この拡張はcargo-xxxと名付けたコマンドを適切にインストールするだけで、cargoにxxxというサブコマンドを追加できる。
小野 輝也 :「Rustで始めるネットワークプログラミング」、 Amazon Services International, Inc. (2019年6月19日)
高野 祐輝:「並行プログラミング入門 ― Rust、C、アセンブリによる実装からのアプローチ」、オライリージャパン、ISBN 978-4-87311-959-5(2021年08月24日)。
英語の読める読者ならば、rustup doc コマンドを用いる事で以下の文献をオフラインで閲覧可能。また、日本の有志によってRust By Exampleなどが翻訳されており(ただし部分訳)、公式サイトなどを参照されたい。
The Rust Programming Language
Rust By Example
Rustlings
The Standard Library
The Edition Guide
The Rustc Book
The Cargo Book
The Rustdoc Book
Extended Error Listing
The Reference
The Rustonomicon
The Unstable Book
The rustc Contribution Guide
The Embedded Rust Book
言語実装手法においてのプログラミングパラダイムは特定の実装手法に限定されない非純粋なマルチパラダイムプログラミング言語である。文法の表面的な記述は手続き型プログラミング、ブロックコードのまとまりの意味論は関数型プログラミング、型システムを用いたオブジェクト構造はオブジェクト指向プログラミングのパラダイム特性を持つ。特定のプログラミングパラダイムのみを使用してソースコードを記述することはなく、要所々々の必要な所で必要なパラダイムを使用してソースコードを記述することになる。
ソースコードをターゲットプラットフォームに最適化したオブジェクトファイルにコンパイルするコンパイル言語のパラダイム特性を持つ。多くのスクリプト言語が持つインタプリタ機能や、SwiftやGoが提供するようなREPL機能のパラダイム特性は持たない。
その他のパラダイムとして、関数の入出力パラメータにジェネリック型を指定するジェネリックプログラミング、非同期機能を実現する並行計算のパラダイム特性を持つ。
Rustはマルチパラダイムプログラミング言語であり、手続き型プログラミング、オブジェクト指向プログラミング、関数型プログラミングなどの実装手法をサポートしている。基本的な制御構文はC言語に似ているが、その多くが式(expression)であるという点においてはML言語に似ている。コンパイル基盤にLLVMを用いており、実行時速度性能はC言語と同等程度である。強力な型システムとリソース管理の仕組みにより、メモリ安全性が保証されている。
Rustは2016–2022年の間Stack Overflow Developer Surveyで「最も愛されているプログラミング言語」で一位を獲得し続けている。一方で、Rustは学習難易度が高い言語とも考えられており、2017年ロードマップでは学習曲線の改善を目的として挙げていた。
Rustという名前はさび菌に因んで付けられた。この命名の後、当時の開発チームメンバーの多くが自転車を愛好していたことから、自転車のチェーンリングの錆つきを元にしたデザインのロゴが考案された。当然、チェーンリングの錆がさび菌によって生じるわけがなく、「設計者のグレイドン・ホアレが生物学オタクであることから酸化鉄の「錆」ではなく「さび菌」なのだ」と、参考文献の末尾に記されている。
これは参照と参照先の生存期間等を比較することで静的に検出できる(借用チェッカー)。これにより参照は常に有効になり、ヌル参照チェックも不要になる。このような背景で導入されたのがRustの参照である。
参照に関する型・演算子・式が存在する。借用を表す式を借用式 &expr(英: borrow expression)という。型・演算子は以下である。
すなわち、演算子 & を用いた式 &expr の評価により型 &T の値が得られる。&mut でも同様である。
共有参照型は参照先の読み取りのみが可能で書き換えができないが、値が不変であるため同じ値を指す複数の共有参照が生成できる。参照はCopy トレイトによりムーブでなくコピーで渡される。可変参照型は両方が可能であるが、値が可変であるため同じ値を指す他の参照が生成できない。ゆえに参照は Copy トレイトを持たずコピーでなくムーブで渡される。