概要
- Pythonチョットワカルマンが
- 「Rustってロゴもサイトもかっこよいから面白そう」と思い
- OS Sierraのせいでインストールに頓挫しつつも
- Rustをゼロから触って
- VScodeでデバッグをキメて
- Hello Worldするまでの話
Rust入門とかいうn番煎じな記事です。
本当、門に入るレベルなのでご容赦を。
Rustのインストール
で、躓きました。
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
を最初に試しましたが、OSのバージョンが古すぎる!と怒られました。
Logic9とかいう化石を使うためにわざとバージョン落としているので、
古いからだめかー…と諦めていたところ、
同じような状況で戦っていていた人の記録があったので、
それを参考にインストールしてみたら、通りました。
$ curl https://sh.rustup.rs -sSf | sh -s -- --help
$ cargo --version
cargo 1.50.0 (f04e7fab7 2021-02-04)
$ rustc --version
rustc 1.50.0 (cb75ad5db 2021-02-10)
$ rustup --version
rustup 1.23.1 (3df2264a9 2020-11-30)
プロジェクトの作成
なにはともあれ、プロジェクトを作成しましょう。
Pythonはファイル一つで完結できる方法を知っているのですが、
Rustは知らないので、おとなしく手順を踏んでプロジェクトを作成します。
$ cargo new hello --bin
$ cd hello
$ tree
.
├── Cargo.lock
├── Cargo.toml
├── src
│ └── main.rs
└── target
├── CACHEDIR.TAG
└── rls
├── CACHEDIR.TAG
└── debug
├── build
├── deps
│ ├── hello-76feb4ce3499974c.d
│ ├── hello-86d258b864f270e1.d
│ ├── libhello-76feb4ce3499974c.rmeta
│ ├── libhello-86d258b864f270e1.rmeta
│ └── save-analysis
│ ├── hello-76feb4ce3499974c.json
│ └── hello-86d258b864f270e1.json
├── examples
└── incremental
├── hello-27d20vfgw3w3a
│ ├── s-fvxh8t242p-kdjyar-b2rmmlvckmyu
│ │ ├── dep-graph.bin
│ │ ├── query-cache.bin
│ │ └── work-products.bin
│ └── s-fvxh8t242p-kdjyar.lock
└── hello-2v337gk94ucz4
├── s-fvxh8t2nyf-1xpfnvz-2atsjlik91zz
│ ├── dep-graph.bin
│ ├── query-cache.bin
│ └── work-products.bin
└── s-fvxh8t2nyf-1xpfnvz.lock
Hello worldをターミナルからキメにいく
Rust入門 - とほほのWWW入門 を見ていくと、
どうやら cargo run
とするとHello Worldできるみたいですので、
早速やっていきます。
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.09s
Running `target/debug/hello`
Hello, world!
できた。
VSCodeのデバッグからキメにいく
デバッグのたびにいちいちcargo run
するのは少々面倒なので、
愛用エディターのVSCodeでデバッグできるようにしましょう。
拡張機能のインストール
調べると、以下の拡張機能が必要とのことなのでインストールします。
コードの補完や色付けをするやつ。
よくわからないけどとにかくRustをちゃんとデバッグできるやつ。
さあF5を押してデバッグ
- 訳:起動構成が提供されていないため、デバッグを開始できません。
まあlaunch.json
設定してないし、OKしか押せないのでOK
- 訳:このワークスペースでCargo.tomlが検出されました。
ターゲットの起動構成を生成しますか?
Noを押した世界線の僕はデバッグできなかったらしいので、
Yesを選択します。
すると、自動的にlaunch.json
が設定されます。
{
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug executable 'hello'",
"cargo": {
"args": [
"build",
"--bin=hello",
"--package=hello"
],
"filter": {
"name": "hello",
"kind": "bin"
}
},
"args": [],
"cwd": "${workspaceFolder}"
},
{
"type": "lldb",
"request": "launch",
"name": "Debug unit tests in executable 'hello'",
"cargo": {
"args": [
"test",
"--no-run",
"--bin=hello",
"--package=hello"
],
"filter": {
"name": "hello",
"kind": "bin"
}
},
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
ということで改めてF5でデバッグをキメると
Hello, world!
と表示され、本日は勝利です。
対戦ありがとうございました。
明日から楽しませていただきます。