Pythonチョットワカルから始めるRust入門


概要

  • 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! と表示され、本日は勝利です。

対戦ありがとうございました。
明日から楽しませていただきます。

参考