Rust をはじめてみよう!ということで Rust をはじめてみました。
Rust ってなに?
Rust言語は速度、並行性、安全性を言語仕様として保証するC言語、C++に代わるシステムプログラミング(英語版)に適したプログラミング言語を目指している[4]。2006年の開発初期はグレイドン・ホアレの個人プロジェクトだったが、2009年にMozillaが開発に関わり始めてMozilla Researchの公式プロジェクトとなった参考 : Rust (プログラミング言語) – Wikipedia
また、公式ドキュメントが充実しているのでそちらをみれば大体分かるようになっています。
特徴
- ゼロコスト抽象化
- ムーブセマンティクス
- 保証されたメモリ安全性
- データ競合のないスレッド
- トレイトによるジェネリクス
- パターンマッチング
- 型推論
- 最小限のランタイム
- 効率的なCバインディング
インストール
rustup を使ってインストールします。
$ curl https://sh.rustup.rs -sSf | sh
実行すると以下のように言われるので設定を反映させます。
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.
To configure your current shell run source $HOME/.cargo/env
$ cargo
command not found: cargo
$ source $HOME/.cargo/env
$ cargo --version
cargo 1.29.0 (524a578d7 2018-08-05)
rustc というのコンパイラもインストールされます。
$ rustc --version
rustc 1.29.1 (b801ae664 2018-09-20
rustc を使って Hello, World!
まずは rustc を使って Hello, World! を実行してみます。
$ mkdir hello_rust
$ cd hello_rust
$ vi hello.rs
fn main() {
println!("Hello, world!)
}
ファイルを作成したら rustc を使ってコンパイルし実行すると 「Hello, world!」 が出力されます。
$ rustc hello.rs
$ ./hello
Hello, world!
Cargo を使って Hello, world!
実際のプロジェクトでは Cargo というパッケージマネージャーを使っていくことになると思います。Cargo を使って新しくプロジェクトを作成してみます。
$ cargo new hello_cargo
Created binary (application) `hello_cargo` project
ディレクトリツリーは以下のようになっています。
hello_cargo
├── Cargo.toml
└── src
└── main.rs
Cargo.toml ファイルがパッケージを管理するファイルです。
[package]
name = "hello_cargo"
version = "0.1.0"
authors = ["taisa "]
[dependencies]
デフォルトでは main.rs に 「Hello, world!」 を出力する実装がされているのでそのまま実行してみます。build コマンドはコンパイルのみで、run コマンドはコンパイルと実行が行われます。
# コンパイル
$ cargo build
Compiling hello_cargo v0.1.0 (file:///Users/satomasaki/Dev/taisa/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 1.99s
# コンパイルと実行
$ cargo run
Compiling hello_cargo v0.1.0 (file:///Users/satomasaki/Dev/taisa/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 1.33s
Running `target/debug/hello_cargo`
Hello, world!
cargo は test コマンドも備えていて、test を実行することができます。(test 自体が存在しないのですべて0)
$ cargo test
Compiling hello_cargo v0.1.0 (file:///Users/satomasaki/Dev/taisa/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 1.51s
Running target/debug/deps/hello_cargo-666fd07beeac7bb5
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
サンプル集
Rust は公式ドキュメントが充実していてサンプル集などもあるので今後はそれらを参考にしてみます。