わくわく計算ライフ

ゲーマーによる節約生活。はじまります。

「手を動かして考えればよくわかる 高効率言語 Rust 書きかた・作りかた」でハマったとこ

書籍で最近Rustの勉強をしています。
Rustはいろいろ納得のいく良い言語なのですが、機能や書式がバラエティに富んでいることもあり修得が難しい言語と言われています。
しかし、最近は良い本もいっぱい出てきており、読み進めていくうちに「案外分かりやすいかも」と思えるまでになりました。
そんな中で学習中にハマった箇所について共有していこうと思います。
追記しました(2022/03/09)

1. 使用した書籍について

現在使用している書式は以下です。

なでしこの作者としても有名なクジラ飛行机 さんの著書です。
550page超のボリュームながら、前半はRustとの対比としてPythonのコードも併記してあるので激重というわけでは無いです。
サンプルが具体的にイメージが付きやすい実際の使用に近い例から持ってきているのでイメージが湧きやすいと思います。
もちろんサンプルコードはWeb上(GitHub)にも掲載してあるので、写経をミスっても安心です。

2. ハマった箇所

個人の進捗としてはもうそろそろ全部終わりそうなとこまで来ています。 影響のない細かい誤植等を除くと以下がハマりどころでした。
Rustそのものに関係ないので、ここで時間使うのはもったいないなーということで共有させていただきます。

2.1. 実行環境

Windows11を使用しています。
現状引っかかったのは、Windows絡みの箇所だけなので、Windowsじゃない人は回れ右していただいて結構です。
何でWindowsでやってるの?というと、直近の目標にWin32API使ったアプリの製作があるからです。
特にそいういうのが無ければWSL2のUbuntuとかでやります。

2.2. 「Ch.6 ミニ言語を作る」

こちらPEGで入力文字列をパースしているのですが、写経して実行時にParse Errorが出ました。
原因は改行コードでこちらの環境で作成したtomatoスクリプトファイルがUTF-8のCRLFになっていたのが原因でした。
とりあえず、改行コードをLFに変えて対処しました。Windowsあるあるですね。

2.3. 「Ch.6 RustでWebAssemblyを使えるようにする」

こちらは環境構築で詰まりました。cargo install でwasm-packが入らんぞ…と。
ということで不足ソフトを追加でインストールしました。

エラー出力を見るとopennssl-sysのビルドでこけていたので、crateのページを確認。
docs.rs

Windows MSVCの項目を確認

On MSVC it's unfortunately not always a trivial process acquiring OpenSSL. A couple of possibilities are downloading precompiled binaries for OpenSSL 1.1.0, or installing OpenSSL 1.0.2 using vcpkg.

とのことなので、OpenSSLのWindows バイナリかVcPkgで入れろとのこと。
(片方で良かったんか。両方入れちゃったよ。)
あとPerlが無いみたいなエラーも出た。 (参考Stackoverflow )

2022/03/09 追記
なんか、Strawberry Perl入れたときに、一緒に入っているOpenSSLで十分みたいで最終的には ScoopPerl入れたらそれで間にあいました。
多分Chocolateyとかでも大丈夫なはずです。

とりあえず、これでwasm-packのインストールが通りました。
これから残りを勉強しますー。

3. その他

他にもオライリーの蟹本(第1版)も読んでいたのですが。

こちらは、マンデルブロ図形の描画をベースにRustの機能を説明して、きれいにまとまってるなとは思っていましたが、
マンデルブロ図形を書く例だといまいち便利さが分からんな??」となっていたので、今回のクジラ飛行机さんの書籍は良い感じにhitしましたね。
結構分かってきてから蟹本を読み返すとなるほどと思えるのですが、初学者にはわかりづらいかなと感じました。