まえがき
この記事はRUSTチュートリアルをZerobillbank社内メンバー(有志)で勉強がてら、可能な限りわかりやすく内容を書き出す企画の一部です。
なお、初学者のため(略)という免責を打ちつつ間違いなどあればコメントで教えていただけますと一同嬉しく思います!
概要
rustの環境構築とHello, world!をやるよ
項目的にコマンドの羅列だよ
環境構築
rustupのインストール
Mac,Linuxの場合
rustupツールのインストール
$ curl https://sh.rustup.rs -sSf | sh
pathの追加
$ source $HOME/.cargo/env
$ export PATH="$HOME/.cargo/bin:$PATH"
Windowsの場合
下記のURLでインストーラーをダウンロードして実行する
https://www.rust-lang.org/install.html
その他のrustコマンド
アップデート
$ rustup update
アンインストール
$ rustup self uninstall
バージョン確認
$ rustc --version
ドキュメンテーションの起動
$ rustup doc
Hello, world!をやっちゃうぜ
ディレクトリ作成
もちろんディレクトリの場所は任意でOK
$ mkdir ~/projects
$ cd ~/projects
$ mkdir hello_world
$ cd hello_world
プログラム作成
main.rs
を作る
ターミナル上ならvim main.rs
fn main() {
// 世界よ、こんにちは
println!("Hello, world!");
}
プログラムの実行
$ rustc main.rs
$ ./main
Hello, world!
Rustプログラムの解剖
メイン関数
メイン関数は最初に実行される特別な関数だよ
fn main() {
}
コードの書き方
println!("Hello, world!");
ポイント
- タブではなくスペース4つでインデントする
-
println!
は関数ではなくマクロを呼び出してる -
"Hello, world!"
の文字列を引数として,println!
が画面に表示している - 行の最後を
;
で終える
コンパイルと実行
プログラムを実行するには、ソースファイルをコンパイラに渡してコンパイルする必要があるよ。
$ rustc main.rs
コンパイルに成功すると、実行可能ファイルが出力されるよ。
$ ls
main main.rs
ファイル名を指定することで実行するよ。
$ ./main
Hello, world!
Cargo
主な機能
・ Rustのビルドシステム
・ パッケージマネージャ
・ プロジェクトの管理
コードのビルドや依存しているライブラリのダウンロード等をしてくれるため便利
バージョン確認
$ cargo --version
プロジェクトの作成
hello_cargo
というバイナリ形式の実行可能ファイルを作成する
$ cargo new hello_cargo --bin
$ cd hello_cargo
├── Cargo.toml
├── src
│ └── main.rs
Cargo.tomlのなかみ
tomlはCargoの設定フォーマット
[package]
name = "hello_cargo"
version = "0.1.0"
authors = ["Your Name <you@example.com>"]
[dependencies]
[package]
パッケージ設定していることを示すセクションヘッダー
[dependencies]
プロジェクトの依存を列挙するセクションの始まり
パッケージのコードはクレートとして参照される
Cargoでのビルドと実行
チェック
$ cargo check
Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.32 secs
ビルド
$ cargo build
Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 2.85 secs
実行
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
Running `target/debug/hello_cargo`
Hello, world!