Rust事始め
プログラミング言語 Rust を始めてみる
以前にRust言語が話題になっているのを目にして、どんな言語かと軽く情報収集をしました。
Rust 概要
C言語やC++言語のようにシステムプログラミングに使える、性能、メモリ安全と並行性のサポートを重視し、手続き型、オブジェクト指向型、関数型のマルチパラダイムを提供する強い型付け言語がRustの特徴です。
コンパイル結果はOSネイティブの実行可能バイナリとして生成され、ガベージ・コレクタを使わず所有権によりメモリ安全性を確保、スレッド間のメッセージ授受やアトミックなアクセスなどによる安全な並行性の確保などが盛り込まれています。
Rust 言語についての日本語ドキュメント類が次のサイトにまとめられています。
Home | Rustの日本語ドキュメント/Japanese Docs for Rust
ただし、最新の情報はやはり英語のドキュメントを参照することが望ましいようです。
当面の事始めとして、次の日本語ドキュメントを見ながら進めていきます。
「プログラミング言語Rust日本語版」
Rust の歴史、経緯
2010年に発表され、2015年にバージョン1.0がリリースされました。 2021年には非営利団体 Rustファウンデーションが設立され、Rustの資産は当初の開発元のMozillaから移管されることになります。Rustファウンデーションの設立メンバーは、AWS、ファーウェイ、Google、マイクロソフト、Mozilla です。
Rustの開発環境(Windows)
Windows上で Rust 開発環境を用意するには、Visual Studio または Microsoft C++ Build Tools が必要になります。Microsoft C++ Build Tools の利用は Visual Studioのライセンスが必要なので、いずれにせよ Visual Studio が必要となります。
Visual Studio のライセンスは基本有償です。無償のCommunityエディションを利用するには条件を満たす必要があります。
Visual Studio がインストールされているPCでのRust開発環境
次のサイトから、Windows 64bit用のインストーラ(rustup-init.exe)をダウンロードし実行します。 Install Rust - Rust Programming Language
実行すると、インターネットから必要なコンポーネントをダウンロードしつつインストールが実行されます。 デフォルトでは、インストールしたユーザーの %USERPROFILE%.cargo\bin にコマンド類が格納され、ユーザーの環境変数PATHに登録されます。
コマンドプロンプトを立ち上げ、rustc コマンドを実行するとコンパイルが実行できます。
Hello world
作業ディレクトリを作成(例、D:\work\hello)、Rustのソースファイル hello.rs を記述します。
fn main() { println!("Hello, world!"); }
- 関数定義は、fn で開始し、関数名、引数、戻り値を記述。ここでは、関数名がmainで、引数なし、戻り値なしの関数を定義
- 関数名mainはプログラムのエントリポイントを示す特別な関数
- 関数本体は、波括弧で囲む。Rustのスタイルは、関数宣言と同じ行に空白1つあけて開き波括弧を置く
- 関数内に、テキストをコンソールに表示するprintlnマクロを呼び出すコード println! を記述。インデントは空白4つ
- 文字列はダブルクォートで囲む。セミコロンで行を終端(マクロ呼び出し式を終える)
rustc コマンドを実行しコンパイルをします。
D:\work\hello> rustc hello.rs D:\work\hello> dir /w [.] [..] hello.exe hello.pdb hello.rs D:\work\hello>
hello.exeが生成されています。また、デバッグ用シンボルファイル hello.pdb も生成されています。
hello.exe を実行します。
D:\work\hello> hello Hello, world! D:\work\hello>
Visual Studio CodeでRust開発
Windows 環境でRust開発をするには、現在のところ Visual Studio Codeを使うのがよさそうです。 次のページを参照し、Visual Studio CodeでRust機能を設定します。 Windows で Rust 用の開発環境を設定する | Microsoft Docs
Visual Studio CodeでRust開発する際は、Rust標準ビルドシステム Cargo でプロジェクトを作成します。
その他
Emacs でRust開発をするには、rusticを入れるのがよさそうですが、設定方法が package機能を使うものしか見つけられず、素の設定が見出せなかったのでいったん保留(挫折ともいう)。
Rustは、標準でビルドツール(Cargo)が備わっているので、OS毎に異なるビルド環境を用意しなくて済むようです。
Rustのオブジェクト指向型のサポートは、C++を始めとするクラスベースとはちょっと異なります。structおよびenumでデータを定義し、implでstructのメソッドを定義します。ポリモーフィズムはtraitで定義します。馴染むのに少々かかりそうです。
変数はデフォルトで不変です。
ドキュメントコメントが提供され、ソースコードのコメントからドキュメントを生成します。
C言語との相互運用性はありますが、C++言語とは直接の相互運用性はなく、C++側でC言語ラッパー(extern "C")を用意する必要があります。
標準ライブラリは貧弱、外部ライブラリを利用することが多くなりそう。
Wikiに随時記載中
Rustについてかじったことを随時Wikiに記載しています。 www.torutk.com