hiro99ma blog

何か技術的なこと

rust: Rustがんばろう 2日目

2025/02/08

はじめに

Rust を勉強することにした。がんばろう。

vscode で、自分で入力していないアレ

vscode でコーディングしているとときどき「こんなの入力したっけ?」という文字が表示されていることがある。
Rust だとこの赤色にした部分がそうだ。

image

慣れると便利なのかもしれないけど、私はちょっと苦手なのだ。
"workbench.colorCustomizations""editorInlayHint.foreground" などで変更できた。

rust-analyzer の設定にも “inlayHints” という項目はあるのだがパラメータが多くて面倒になった。
まあ、色をいかにも自分で入力してなさそうに見えておけばよいのだ。

terminal の hover が消えない?

Rust を vscode の terminal でビルドするようになってから、terminal に表示された URL リンクにマウスカーソルを当てたときに表示されるホバーが消えないのが気になるようになった。
make ではあまり URL が出力されるようなビルドをしていなかったのだが Rust だと毎回何かしらの URL が出力されているので機会が増えたようだ。

しかし消えないのは何でだ?と思って操作を試したところ、ホバー表示の delay を大きくしているせいで、 マウスカーソルを下から移動させて vscode の編集ウィンドウに持っていくとき、 その途中でカーソルが terminal の URL リンクをかすめ、 それが delay 後にホバーが表示される頃にはカーソルは既に terminal を通り過ぎていて ホバーは表示するけど消えない、ということになっているようだった。

Windows だけなのか、あるいはマウスドライバなども影響しているのかは分からないが、 マウスカーソルがホバー対象から外れてもカウントが続いているというのがよろしくないのだと思う。

今のところ terminal の URL からジャンプすることは少ないのでホバー表示を隠すことにした。

やはり本の内容は古い

出版されたのが 2019年だから仕方ないのだが、ネット版に比べるとやはり内容が古い。

前回気になった cargo new --build も新しい方にはないし、rand を使うときに出てきた extern も新しい方にはない。
混乱しそうなので、本はネットを使わないでやるときだけにした方がいいかな。

const と let した変数は違う

mut をつけずに let で代入するのは C言語の const と同じかと思っていたが、そうではないそうだ。
数当てゲームrand::rng().random_range()const で受けるようにしただけだとエラーになった。
:u32 などつけてもダメだ。
ビルド時に値が決定していないとダメってことかな?

範囲については const にすることができた。
ただこうすると戻り値の型も u8 になり、guess.cmp()u32 なのでそこでエラーになった。

    const START:u8 = 1;
    const END: u8 = 101;
    let secret_number = rand::rng().random_range(START..END);

エラーを無くすには、STARTENDu32 にするか、guess.cmp(&secret_number.into()) のようにするそうだ。
.into() は vscode の Quick fix に出てきただけなのだが、キャストよりも広い意味での型変換に使う?
C でのキャスト相当なのは as かな。 C++ の static_cast<T> みたいなものだと思う。

そのうち、ちゃんと調べてから使おう。

型アノテーション

let guess: u32: u32 の部分を「型アノテーション」と呼ぶ。

アノテーションといえば「注釈」。
注釈といえば「コメント」。

というわけで、私の中では「アノテーション=コメント的なもの」という思い込みというかがあった。
Java の @ で始めるあれもアノテーションだったので、なんでコメント的なものをやらないと動かない言語になったんだ、などと思ったりもしていた。

C言語だと普通に型名を指定するので「型注釈」と日本語になっていて困惑したのだが、 型アノテーション(type annotation)なら仕方が無いな。

“annotation” や “comment” で検索していると「// TODO xxx」みたいなのはアノテーションコメント、というサイトがたくさん出てきた。
しかし日本語のサイトは出てくるものの英語で “annotation comment” で検索しても出てこない。
私が vscode で使っている、TODO などを目立たせる extension では “annotations” と表現しているようだった。

和製英語なのだろうか? あるいは最近出てきたばかり?
よくわからなかった。

おわりに

はかどらん・・・。

< Top page