5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

こんにちは、GxPの森下です!
この記事はグロースエクスパートナーズ Advent Calendar 2024の7日目の記事です。

弊社では日常的に勉強会が開催されており、一部の勉強会はサイドプロジェクトとしても推進されています。私自身もいくつかの勉強会に参加しており、勉強会がきっかけで競技プログラミングを始めることになりました。その際、新しい言語に挑戦しようと思い、Rustを選択しました。今回は、その過程で行った環境構築とその際の注意事項について紹介します。

WSLを使用する理由
Rustはコンパイルが遅い言語として知られており、それを解決するためにmoldを使用することにしました。ただ、Windows上だと動作しないため、WSLを選択しました。

説明に出てくるコマンドについて
powershellと記載しているものは、WSL外で実行しており、bashと記載しているものはWSL内で実行しています。

環境

  • Windows 11
  • WSL v1.2.5.0
  • VSCode

WSLの準備

Ubuntuのインストール / 起動

powershell
wsl --install
その他のWSLの操作
powershell
# WSLのバージョン確認
wsl -v

# インストール出来るディストリビューションの確認
wsl --list --online

# ディストリビューションを指定してインストール
wsl --install -d Ubuntu-24.04

#インストール済みのディストリビューションの確認
wsl --list --verbose

# 特定のディストリビューションのアンインストール
wsl --unregister Ubuntu-24.04

# Ubuntuの起動
wsl -d Ubuntu

インストールされたUbuntuの情報の確認

bash
lsb_release -a
# または
cat /etc/os-release

Ubuntuのバージョンが22以上でないと、CMakeのバージョンがmoldのコンパイル条件を満たさないため、apt installではなく、wgetなどでバージョンを指定してインストールする必要があるので、moldを使用する場合はUbuntuのバージョンに注意してください。

バージョンを指定してCMakeをインストールする場合
bash
wget https://github.com/Kitware/CMake/releases/download/v3.30.3/cmake-3.30.3-linux-x86_64.sh
chmod +x cmake-3.30.3-linux-x86_64.sh
sudo ./cmake-3.30.3-linux-x86_64.sh

パッケージの最新化と各種インストール

bash
sudo apt update && sudo apt upgrade -y && sudo apt install -y curl git cmake

curlはRustのインストールに必要なため、またgitとcmakeはmoldのインストールに必要なため、それぞれインストールしています。

sudoコマンドが使えない場合 対象のユーザーをsudoグループに追加する必要があるので、以下を実行してください。
bash
# ユーザー名の確認
whoami

# sudoグループの内容を確認
cat /etc/group | grep sudo

# rootユーザーに切り替え
su - root

# sudoグループにユーザーを追加
usermod -aG sudo <ユーザー名>

Rustのインストール

以下を実行し、実行後「1」を入力

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

環境変数の設定

bash
source $HOME/.cargo/env

各種バージョンの確認 (バージョンが確認出来たらインストール完了)

bash
rustc -V && cargo -V && rustup -V

moldのインストール

moldはRustのビルドを早くしてくれるツールです。詳細は以下をご確認ください。

以下を順番に実行

bash
git clone --branch stable https://github.com/rui314/mold.git
cd mold
./install-build-deps.sh
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=c++ -B build
cmake --build build -j$(nproc)
sudo cmake --build build --target install
./install-build-deps.shがエラーになる場合

./install-build-deps.shの実行時にE: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied) が出た場合、権限が不足しているのでsudoを付けて実行してみてください。

bash
sudo ./install-build-deps.sh

cmake --build build -j$(nproc)は時間 (20-30分程度) がかかるので注意してください。

バージョンの確認 (バージョンが確認出来たらインストール完了)

bash
mold -v

実行する際は、cargoの前にmold -runを付ける

bash
mold -run cargo run

VSCodeの準備

WSLへの接続

以下の拡張機能をインストール
image.png

接続
Ctrl + Shift + Pを押下し、以下を実行
image.png

ディストリビューションをどれにするか聞かれるので、Ubuntuを選択

rust-analyzer

rust-analyzerはRust用のコード補完・解析ツールです。
以下の拡張機能をインストール
image.png

以下にsettings.jsonの例を示します。

settings.json
{
    "[rust]": {
        "editor.defaultFormatter": "rust-lang.rust-analyzer",
        "editor.formatOnSave": true
    },
    "rust-analyzer.checkOnSave": true,
    "rust-analyzer.check.command": "clippy",
    "rust-analyzer.check.extraArgs": ["--", "-A", "clippy::needless_return"],
}

"rust-analyzer.check.command": "clippy"
clippyはRustのLinter (静的解析ツール) で、rust-analyzer.check.commandのデフォルトはcheckになっています。checkはコンパイル可能かどうかの最小限のチェックしか行いませんが、clippyはRustのより適切な書き方も教えてくれます。

"rust-analyzer.check.extraArgs": ["--", "-A", "clippy::needless_return"]
Rustでは暗黙的に、セミコロンのない最後の式が返され、returnで明示すると警告が出ます。この警告を出したくない場合に、"rust-analyzer.check.extraArgs": ["--", "-A", "clippy::needless_return"]を設定することで、制御することが出来ます。設定後、以下のようにしても警告は出ません。

fn double(value: i32) -> i32 {
    return value * 2; // 通常、value * 2 のような形でないと警告が出る
}

fn main() {
    let result = double(10);
    println!("Result: {}", result);
}

参考

動作確認

プロジェクトの新規作成

bash
cargo new <プロジェクト名>
cd <プロジェクト名>

実行 (Hello, world!が出力されたら完了)

bash
mold -run cargo run

以上で環境構築は完了です。お疲れ様でした。

参考リンク

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?