19番目の日記

情報系よわよわ高専生がやったことや思ったことをつらつらと.

Rustの勉強を始めた

おはこんばんにちは。SIGMAです。今回は僕的一番キテるプログラミング言語、Rustについてやっていこうかと!

今回の記事の内容

Rustってなんぞや?

 RustというのはMozillaが中心となって開発されているオープンソースの汎用プログラミング言語です。C++に匹敵する実行速度や詳細なメモリ管理が実現でき、その一方で不正なメモリ領域をサスポインタを許容しないメモリ安全性を保証したりマルチスレッドによる並列実行時のデータ競合をコンパイル時に排除したりするなど安全性を重視しています。1

 簡単にまとめると、

こんな感じですかね。また、RustはStack Overflowの「最も愛されている言語」というアンケートで2016,2017,2018年と3年連続1位に輝いています。

特徴

 3点目のガーベジコレクションを行わないという点についてですが、Rustでは変数の寿命がわかり、自動でメモリを開放するようです。
 とりあえず速くて安全な言語らしいです。他にもたくさん特徴があるのですが僕には説明できるほどの理解がありませんでした。いつかRustの特徴を詳しく書けるようになりたい。

Rustのインストール

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

このコマンドを打てば完了します。

Rustで Hello World

 Rustをインストールするとrustup,rustc,cargoと3つのコマンドを使えるようになりますが、基本的にcargoしか使いません。(VScodeのCode Runnnerだとrustcを使っているが。)

プロジェクトの生成と実行

cargo new プロジェクト名

これでプロジェクト(ディレクトリ)が生成されます。cdコマンドで生成されたプロジェクトの中に入り、

cargo run

と打つことでプログラムが実行されます。2cargo newでプロジェクトを作った直後に実行すると画面にHello Worldが出力されます。これでHello Worldができたよ。やったね!
...
...

プログラムの説明

え?なにもコードを書いていない?そうです。Rustはなんとプロジェクトを作ると勝手にHello Worldのプログラムを生成してくれるのです。ではプロジェクト内のsrc/main.rsを見てみましょう。

fn main() {
    println!("Hello, world!");
}

 これがRustのHello Worldです。Rustのプログラムの拡張子は.rsです。ではプログラムの説明です。

関数定義

 Rustの関数定義の基本構文は以下のようになります。

 fn 関数名(引数1: 引数1の型, 引数2: 引数2の型) -> 返り値の型{
    関数の内容
}

引数や返り値は省略することができます。main関数は引数も返り値もありません。C言語などと同様に、Rustでもmain関数がエントリポイントとなります。
 次にprintln!ですが、これは関数ではなくマクロです。Rustでは' ! 'がついたものはマクロです。3

println!("フォーマット文字列");

このように使います。

 以上がRustのHello Worldのプログラムでした。

終わりに

 長くなってきましたので今回はここらで終わりにしておきます。拙くテキトーな文章で申し訳ないのですが少しでもRustに興味を持っていただければ幸いです。ここまで読んでいただいた方、ありがとうございました。  


  1. Keen・河野達也・小松礼人(2019)『実践Rust入門』株式会社技術評社.

  2. 実行せずにビルドだけしたい場合はcargo buildと打ちます。

  3. println!では任意の個数の引数を渡せるのですがRustでは可変個の引数はサポートしていないのでマクロで定義されています。