はじめに
モチベーションは次の2つです。
- 新しいプログラミング言語パラダイム(所有権やライフタイムなど)を学びたい。
- システムプログラミングとして低レイヤを学びたい。
環境
Mac miniを使います。RustはMacをサポートしています。
- CPU: 6コア Intel Core i7
- メインメモリ: 16GB
- シェル: zsh
%はプロンプトを示し、<code>ぽいところは実際の画面出力やコードです。
Installation
公式にあるrustupを使います。TerminalやiTermなどからcurlを実行します。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
curlを実行すると3つのツールがインストールされます。
- rustc
- Rustのソースコードをコンパイルします。
- cargo
- ビルドシステムとパッケージマネージャの役割をします。一番よく使います。
- rustup
- Rustのバージョンアップや異なるリリースチャネルからのインストールやクロスコンパイル(異なる機種へのコンパイル)をします。
途中で次の選択肢が出ます。初心者のためデフォルトの1を選択します。
やりたいことが他にあれば考える項目だと思います。
Current installation options:
default host triple: x86_64-apple-darwin
default toolchain: stable
profile: default
modify PATH variable: yes
1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1
ここでシェルを読み込み直す(. ~/.zshrc)かTerminalを閉じると、rustcなどのツールが使えるようになります。
% rustc --version
rustc 1.43.1 (8d69840ab 2020-05-04)
今回インストールされたのは1.43.1のようです。
ちなみにRustにはstableとnightlyとbetaのチャネルがあります。基本は安定しているstableか、新実装の入ったnightlyで良いと思います。僕はstableにしています。
コンパイルと実行
Rustを任意の場所で動かします。僕はRustを書くときにVS Codeを使いたいと思いますので、事前にVS CodeのRust Extensionを入れています。
% mkdir rust_projects
workspace % cd rust_projects
rust_projects % mkdir hello_world
rust_projects % cd hello_world
hello_world % code .
コードは次の通りです。記念すべき最初の1歩、"Hello, World"です。
fn main() {
println!("Hello, world!");
}
コンパイルして実行します。rustcを使います。
hello_world % rustc main.rs
hello_world % ./main
Hello, world!
出ました!
ところで、rustcではなくcargoを使うともっと簡単に実行できます。
プロジェクトの作成
せっかくcargoを使うのでプロジェクトから作ってみます。先の場所とは違う任意の場所に移動します。
% cargo new sample --bin
Created binary (application) `sample` package
% cd sample
% ls
Cargo.toml src
Cargo.tomlはビルドの設定ファイルです。その中身はgitに設定された内容が入っています。次のようになっているはずです。yournameとmailは個別に置き換えてください。
[package]
name = "sample"
version = "0.0.1"
authors = [ "yourname <mail@example.com>" ]
src/main.rsには先ほど手で作った"Hello, World"と同じ内容が書かれているはずです。では実行します。
% cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/sample`
Hello, world!
出ました!
cargo runでコンパイルと実行をセットでやってくれます。
コンパイルだけしたいときはcargo buildでできます。
リリースビルドをしたいときはcargo build --releaseです。
ちなみに、次の2つは等価です。
- cargo new sample --bin
- cargo new sample
ライブラリを作る場合はcargo new sample --libにします。
昔はデフォルトがlibだったようです。
おわりに
Rustの環境構築をしました。ほとんどの場合はRustがサポートされているため環境構築は難しくないと思います。次回はRustでサーバーを作りたいと思います。
参考