C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

rust: rust-0.9 あたりからおよそ4年ぶりに rust-1.29 を使ってみる(開発環境の準備)

終末にちょっとしたツールを作ろうかと思い、もののついでに rust の知識をアップデート…というより再学習して遊ぼうかと思いました。

4年前に遊んだ記憶

  • rust-0.9 が最後に手元で遊んだ頃の rust だった覚えがある
  • ユーザーとして簡単な何かを作れそうなコード実装に必要な程度には公式ドキュメントは読んだ
  • 実用アプリは作るに至らず、言語仕様を理解して使用できるようにと小さなサンプルを書いて勉強していた程度
  • うさぎさんでもわかるRustプログラミング言語リファレンス とか書いていた
  • Arch か Ubuntu あたりの GNU/Linux 系の環境で遊んだ

現在の rust の状況

  • rust-1.29.0-nightly の時代( stable は rust-1.27.2
    • Note: 0.9, 1.0, 1.1, ... , 1.9, 1.10, 1.11, ... , 1.29 と minor バージョン番号が複数桁となる方式
  • rustup とかいうので rust のツールチェインをお手軽インストール

今回の環境

  • Windows 10 x86_64; 開発予定のツールのユーザーが Windows ユーザーのため

Windows 10 で rust 開発環境を準備する

Note: Microsoft Visual Studio 2017 の C++ ツールチェインは使用可能な状態で開始。

  1. https://rustup.rs から rustup-init.exe を入手して実行。
  2. 標準設定( x86_64-windows-msvc / stable / yes )ままインストール
    • Note: 最初から nightly を選んでおいてもよい
  3. PATH の通った適当な端末エミュレーター的な環境(cmd, ps, mingw など)から rustup, rustc, cargo など --version して最小限のセットアップの確認

少なくとも標準設定でインストールする分には、まったく苦労どころやひっかかりどころはありませんでした😃

rust のプロジェクトを作って vscode で遊べるようにする

  1. cd プロジェクトのディレクトリーを格納したいどこか
  2. cargo new guessing_game --bin; guessing_game は hoge でもなんでもお好みで。
  3. vscode hoge; 著者環境では alias vscode= しています。環境に応じて読み替えるなり、 WindowsExplorer からポチポチして開くなり適当に。
  4. vscode に rust っぽいプラグインを入れる
  5. .vscode/tasks.json を書く; ↓↓参照
  6. .vscode/launch.json を書く; ↓↓参照

.vscode/tasks.json

{ "version": "2.0.0"
, "tasks":
  [ { "label": "cargo build debug"
    , "type":"shell"
    , "command": "cargo"
    , "args": [ "build" ]
    , "group":
      { "kind": "build"
      , "isDefault": true
      }
    , "problemMatcher": "$rustc"
    }
  , { "label": "cargo build release"
    , "type":"shell"
    , "command": "cargo"
    , "args": [ "build", "--release" ]
    , "group": "build"
    , "problemMatcher": "$rustc"
    }
  , { "label": "cargo clean"
    , "type":"shell"
    , "command": "cargo"
    , "args": [ "clean" ]
    , "problemMatcher": []
    , "presentation": { "panel": "new" }
    }
  ]
}

.vscode/launch.json

{ "version": "0.2.0"
, "configurations":
  [ { "name": "Debug"
    , "type": "cppvsdbg"
    , "request": "launch"
    , "program": "${workspaceRoot}/target/debug/guessing_game"
    , "args": []
    , "stopAtEntry": false
    , "cwd": "${workspaceFolder}"
    , "environment": []
    , "externalConsole": false
    , "preLaunchTask": "cargo build debug"
    , "internalConsoleOptions": "openOnSessionStart"
    }
  ]
}

main.rs に break ポイントを貼ってデバッグ実行(≃F5)したり、 lib.rs を追加してライブラリー的なものをごにょごにょしたりして楽しむ(思い出す、再学習する😏)。環境が整ったら、必要な事はほとんどすべて The Rust Programming Language(または古いようだが参考にはなるかもしれない rust-1.6 の日本語版 プログラミング言語Rust )に書いてあるはずなので、適当に勉強して楽しむ。

Windows での開発環境はどうせ何かしら面倒な事が起きるだろう、と思っていたけれど、ツールチェインに msvc を使う限りにおいてはそこの準備をさておけば面倒ごとは何も起きなかった。善き哉。・・・ llvmgnu のツールチェインを windows で使う場合は何か面倒なりひと手間なりあるかもだけど、「とりあえず msvc ツールチェインでも動けばいっかー」の程度であれば、一般的なアプリケーション開発者であれば苦労なく開発環境を用意できるようだ😃

おまけ: rust のツールチェインを切り替えたくなったら

例えば、 stable でツールチェインをインストールしたけれど、 nightly を使いたくなった場合は、

rustup default nightly

をコマンドすると必要なら最新版をダウンロードしてパスの通ったツールチェインを nightly へ切り替えてくれる。

ちなみに、標準インストールした場合、ユーザーのホームディレクトリーの .cargo に標準で使用するツールチェインの bin などが入り、 .rustup/toolchains/ に stable-x86_64-pc-windows-msvc/ や nightly-x86_64-pc-windows-msvc/ のように rustup で扱ったツールチェインが実行可能な状態でそのまま入っている。