RustをUbuntuにインストールしてプログラムを走らせる

# はじめに

Rust（ラスト）は、C言語、C++に代わるシステムプログラミング言語と言われています。OSや言語を記述するのに適した言語というわけです。

Windows上にLinux環境を構築する方法にWSLがあります。WSL（Windows Subsystem for Linux ) とは、Linuxのバイナリ実行ファイルをWindows 10およびWindows Server上で実行できるようにしたものです。本稿では、WSL上のUbuntu20.04にRustをインストールし、簡単なプログラムを実行するまでを紹介します。

### 参考URL
WSLでWindows上にUbuntu環境を構築する方法は、下記リンクの記事に詳しいので、よかったら参考にしてください。
[LinuxとWindowsの欲張りな環境を手にする](https://daimaohsx.dip.jp/wordpress/2020/05/10/linux-windows-wsl2-ubuntu2004/)

Windows, macOSでのインストール方法などは下記リンクを参照ください。
[RustをWindows／Ubuntu／macOSにインストールしてサンプルプログラムを走らせる](https://daimaohsx.dip.jp/wordpress/2021/03/28/install-rust-on-windows-ubuntu-macos-and-run-the-sample-program/)
本稿は自身のブログから転載しました。


# Rustのインストール

Ubuntuの場合は、まずCコンパイラ（gcc）をインストールします。

```bash
$ sudo apt install gcc
```

次にターミナルからcurlコマンドを実行してrustをインストールします。プロンプト”＞”が表示されたら、「１」を入力します。

```bash
$ curl https://sh.rustup.rs -sSf | sh
info: downloading installer
Welcome to Rust!
 ＜ 略 ＞
1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1
```

ここで一旦、Ubuntuを終了し、起動しなおします。「exit」と入力し、スタートメニューからUbuntuを起動します。

![2021-03-28_08h09_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185720/88c2fa06-976e-347c-22ba-268a0c838375.png)

Ubuntuの再起動が完了したところで、rust関連のコマンドが実行できることを確認します。すでにPATH環境変数の設定も実施されています。

```bash
$ rustc -V
rustc 1.51.0 (2fd73fabe 2021-03-23)
$ cargo -V
cargo 1.51.0 (43b129a20 2021-03-16)
```

# Hello Worldを表示してみよう

任意の場所に「rust」フォルダを作成します。
次に、「cargo new プロジェクト名」でプロジェクトを作成します。下ではプロジェクト名を「show_os_ver」としました。

```bash
$ mkdir rust
$ cd rust
$ cargo new show_os_ver
     Created binary (application) `show_os_ver` package
```

プロジェクトのディレクトリ構成をtreeコマンドで表示したのが下の図です。

```bash
$ sudo apt install tree
$ tree
.
└── show_os_ver
    ├── Cargo.toml
    └── src
        └── main.rs
```

show_os_ver/src/main.rsがソースコードです。

```bash
$ cd show_os_ver/src
$ cat main.rs
fn main() {
    println!("Hello, world!");
}
```

すでに、「Hello World」を出力するプログラムがおかれているので、これをビルドして実行します。
cargo runコマンドが便利です。ビルドと実行を一気に行ってくれます。

```bash
$ cargo run
   Compiling show_os_ver v0.1.0 (/home/linux/works/rust/show_os_ver)
    Finished dev [unoptimized + debuginfo] target(s) in 0.17s
     Running `/home/linux/works/rust/show_os_ver/target/debug/show_os_ver`
Hello, world!
```

# OSのバージョンを表示してみる

ここまでではプログラムを何も作っていません。そこで、OSのバージョンを表示する簡単なプログラムを作ってみます。
エディタでmain.rsを編集します。

```rust
use std::process::Command;
fn main() {
    let proc = Command::new("/usr/bin/cat")
        .args(&["/etc/lsb-release"])
        .output()
        .expect("Failed to start `cat`");
    println!("{}", String::from_utf8_lossy(&proc.stdout));
}
```

プログラムから
”/usr/bin/cat /etc/lsb-release”
を実行し、catから受け取った出力結果を表示します。lsb-releaseファイルは、Ubuntuのバージョンが記載されているテキストファイルです。

- let proc = Command::new　の行でcatコマンドを実行します。
- .args　でcatに与える引数を指定します。
- .output()　でcatの実行完了を待つと同時に出力を受け取ります。
- .expect　で例外処理を登録します。
- println!(“{}”,・・・);　でcatの実行結果を表示します。

さっそく実行してみます。

```bash
$ cargo run
   Compiling show_os_ver v0.1.0 (/home/linux/works/rust/show_os_ver)
    Finished dev [unoptimized + debuginfo] target(s) in 0.24s
     Running `/home/linux/works/rust/show_os_ver/target/debug/show_os_ver`
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.2 LTS"
```

OSのバージョンを表示することができました。

# おわりに

macOSやWindowsから上記同様のことをやってみたい方は、下の記事をどうぞ！
[RustをWindows／Ubuntu／macOSにインストールしてサンプルプログラムを走らせる](https://daimaohsx.dip.jp/wordpress/2021/03/28/install-rust-on-windows-ubuntu-macos-and-run-the-sample-program/)