時には立ち止まってみるのもいいよ

仕事の合間の息抜き。やってることは仕事と同じ。

C言語erがRustはじめました

今更ですが、Rustやってみよー!

とおもっていじったときのメモ。

 

Rustという言語

言語仕様については、みんな大好き「とほほのRust入門」様がめっちゃわかりやすく簡潔にまとめてくださっていますので割愛します。いつもありがとうございます。

とほほのRust入門 - とほほのWWW入門

 

そして、本家のとても分かりやすい日本語ドキュメント

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

  • 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の場合

  1. source ~/.cargo/env
    • PATHを整える
  2. cargo new project_name
    • project_nameフォルダを作って、初期ソースコードとビルド環境一式を作ってくれる。gitの初期化も。
  3. cargo build
    • debug ビルド実行
      • バイナリは target/debug/ に出来上がってる
    • リリースビルドは cargo build --release でおk
  4. cargo run
    • ビルド+実行

 

VS Code だと、cargo new したフォルダ開いて F5 押せばなんかいい感じにやってくれます。

 

Hello, world!