matobaの備忘録

育児しながら働くあるエンジニアの記録

Rustをインストールして、Hello Worldしただけの話

Rustを初めてみた記録を書きます。

参考資料

基本は以下のURLに従います。

The Rust Programming Language 日本語版 - The Rust Programming Language 日本語版

Rustのインストール

rustupはRustをインストール・更新するツールです。まずは、rustupをインストールします。 rustupをインストールすると、Rustに関するいろいろなツールをも一緒にインストールされます。

とりあえず、以下を実行します。macOS 10.15.7を使ってます。fishです。

$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

途中でインストール設定を聞かれたので、僕は、デフォルトでインストールしました。

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1

あと、上記のドキュメントにはありませんでしたが、rustupのインストール後、以下のようなメッセージが出ます。

To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH
environment variable. Next time you log in this will be done
automatically.

「コマンドがインストールされたけど、パスは通ってないので、自分で通せ」という話ですかね。

10年くらい前の自分なら「パスって何だろう?どうやって通したらいいんだろう?」と思いながら、詰まったんだろうなあ。と思いながら、以下でコマンドがインストールされていることを確認しました。

> which rustup
[1]> ls ~/.cargo/bin
cargo*         cargo-fmt*     clippy-driver* rust-gdb*      rustc*         rustfmt*
cargo-clippy*  cargo-miri*    rls*           rust-lldb*     rustdoc*       rustup*

パスは通ってないものの、インストールはされているようです。

パスを通します。fishを使ってるので、以下のように書きます。(実際は他にもパスを書いてますが、省略)

~/.config/fish/config.fish

set PATH ~/.cargo/bin $PATH

そのあと、fishにログインし直して、パスが通っていることを確認します。

> which rustup
/Users/mtb/.cargo/bin/rustup

はい。OK。

Hello Worldしてみる

こんなコードを書き、hello.rs で保存します。拡張子は、.rsのようです。

fn main(){
    println!("Hello World!!");
}

以下のコマンドでコンパイルします。

rustc hello.rs

コンパイルしたら、 hello という実行ファイルができているので、実行すると標準出力に出ます。

> ./hello
Hello World!!

とりあえずここまでは簡単。

脱線:インストールされたツールを確認する

インストールしてHello Worldまで来たので、インストールされたツールが何なのかも確認しておきます。

と言っても、軽くhelpを読んだりリポジトリをサッと見るだけ。

  • cargo: Rust's package manager(Rustのパッケージマネージャー)
  • cargo-fmt: This utility formats all bin and lib files of the current crate using rustfmt.(rustfmtを使ってbinとlibをフォーマットするユーティリティ)
  • clippy-driver: Checks a package to catch common mistakes and improve your Rust code.(Rustコードのパッケージをチェックし、よくあるミスを発見して改善するツール)
  • rustc: (Rustのコンパイラ)
  • rust-gdb: (おそらくRustのデバッガ)
  • rustfmt: Format Rust code(Rustのフォーマッター)
  • cargo-clippy: Checks a package to catch common mistakes and improve your Rust code.(Rustコードのパッケージをチェックし、よくあるミスを発見して改善するツール)
  • cargo-miri: ???? (GitHubを見ると、Rustの実験的なインタープリタ。)
  • rls: Rust Language Server (IDEとの連携用)
  • rust-lldb: LLDB(コンパイラ基盤?)
  • rustup: The Rust toolchain installer(Rustのツールインストーラ)
  • rustdoc: Rustのドキュメント

公式のフォーマッターや静的解析ツール、Language Server、と最初から色々入ってるんだなあ、という印象を受けました。

とりあえず、cargo-fmtとrustfmt、cargo-clippyとclippy-driverの違いがよくわからないんですが、使っているととりあえずおいおいわかるんですかね。

とりあえず、終わり

これだけで、おわりかよっ!!って感じなんですが、今日は時間的にHello Worldと関連ツール調べただけで終わってしまいました。

次はもう少し、別のこともやってみたいところ。

また、気が向いたら、調べつつ、書きます。

ではでは。