Help us understand the problem. What is going on with this article?

RUSTの環境構築とHello,world!について

まえがき

この記事は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!");

ポイント
1. タブではなくスペース4つでインデントする
2. println!は関数ではなくマクロを呼び出してる
3. "Hello, world!"の文字列を引数として,println!が画面に表示している
4. 行の最後を;で終える

コンパイルと実行

プログラムを実行するには、ソースファイルをコンパイラに渡してコンパイルする必要があるよ。

$ 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!
Veritas666777
どこにでもいる普通のtomato。職業は武士。
zerobillbank
ブロックチェーン技術の会社です。Node.js、TypescriptやK8Sなどを用いた技術の色々をポストします。
https://zerobillbank.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away