C言語erがRustはじめました
今更ですが、Rustやってみよー!
とおもっていじったときのメモ。
Rustという言語
言語仕様については、みんな大好き「とほほのRust入門」様がめっちゃわかりやすく簡潔にまとめてくださっていますので割愛します。いつもありがとうございます。
そして、本家のとても分かりやすい日本語ドキュメント
Introduction - Rust By Example 日本語版
個人的に思ったC/C++言語との優位点を挙げてみます
- 型が超厳密。int とか auto なんてくそくらえだ!
- 文字列が文字列だ。でも rawでもかけるぞ
- 固定長配列以外にvector、スライス、ハッシュマップが標準装備
- async/await、thread::spawn
- クレート (パッケージ?モジュール?) includeは要らないよ
難しそうなところ
- メモリの所有権の移動
- クラスがない!
まぁおいおいということで。。
1. インストール
環境はWindows WSL + Ubuntu 22.04です。異論は認めません。
- Ubuntuのインストール → Market Place でインストールしただけ
- ビルド環境のインストール → パッケージをビルドするのに必要
-
sudo apt-get install build-essentials pkg-config libssl-dev
-
- rust本体 → 公式
https://www.rust-lang.org/ja/tools/install
-
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
って書いてあるけど protoなんちゃらが付いてるとうまくいかんかった
-
curl https://sh.rustup.rs -sSf | sh
-
- VS Code → 入ってた (おい
- VS Code の機能拡張
- rust-analyzer → 入力補完とか。rust 公式。
- Better TOML → toml ファイルのハイライト・フォーマッタ。お好みで。
- CodeLLDB → デバッガ
rustupコマンドがrust環境全体のパッケージマネージャ
cargoコマンドがプロジェクト単位のビルドシステム兼パッケージマネージャ
便利パッケージは例えばこんなの
- rustup component add rustfmt → フォーマッタ(公式)
- rustup component add clippy → 静的解析
- cargo install cargo-edit → cargo.tomlをいい感じにしてくれるらしい
※ rustup も cargo もパッケージマネージャと言ってますが、
rustupはビルド済みのバイナリをダウンロードしてインストール
cargoはソースをダウンロードしてビルド&インストール
という違いがあるようです。
なので、cargo install rustfmt で rustfmt をインストールすることも可能です。が、rustupで追加できるものについては rustup を使うほうが簡単で、(ビルドが不要なので)当然早いです。
また、cargo install はビルドを行うため apt-get で追加の開発ライブラリをインストールする必要がある場合もあります。
2. プロジェクトの作成と実行
CLIの場合
- source ~/.cargo/env
- PATHを整える
- cargo new project_name
- project_nameフォルダを作って、初期ソースコードとビルド環境一式を作ってくれる。gitの初期化も。
- cargo build
- debug ビルド実行
- バイナリは target/debug/ に出来上がってる
- リリースビルドは cargo build --release でおk
- debug ビルド実行
- cargo run
- ビルド+実行
VS Code だと、cargo new したフォルダ開いて F5 押せばなんかいい感じにやってくれます。
Hello, world!