hiro99ma blog

rust: ドキュメントの見方が分かってない (2)

2025/09/30

前回の続き。

Rust のドキュメントの読み方が分かっていないのでなんとか理解しようとしているところ。

メソッドを探す

メソッドは structimpl するので、左側の “Structs” で一覧に飛んで該当する struct を探す。
見つけたらクリックしてページに飛ぶと左側に “Methods” があるのでそこから探しても良いしページ検索しても良いし。

探すものが分かっている場合はよいのだ。
それにテキストエディタによってはメソッド名の上にカーソルを乗せてホバーに説明文が出てくるので、そっちの方が早いかもしれない。

このライブラリクレートに機能がありそうだけどどれかわからない、というときは AI の方がよいかもしれない。

今やっている、トランザクションの作り方を質問してみた。
ほどほどに出てきてなかなかよい。

おまけ

エラーをとるのに時間がかかった

今回の件とは関係ないけど、deepWiki や bdk_wallet のメソッド説明では psbt の括弧の中で wallet.build_tx() を呼び出しているのだが、 Cookbook のTransaction Builder の方はドットで連結して呼ぶように書いてある。
私は先に Cookbook を読んでいたので連結させていたのだが、これだとどうやってもエラーになってしまう(“cannot move out of a mutable reference”)。

image

赤い波線がばーっと出ているので舞い上がって(?)しまい、&mut が何とかかんとか言っているので、 これは let mut psbt のことだろうと考えたのだ。
戻り値の型を決めかねていて Result<> にするか Transaction だけを返して abort させるかで簡単にできそうな方をやろうとしていて、 じゃあ .unwrap() がよいのか、いやいや ? でシンプルにした方がよいかとゴチャゴチャやっていた。
こういう “move” とかそういうのはきっと timeline 関係で、どれかが参照になっているからダメとかそういうことだろうと当たりを付けたのだ。
まあ、当たっていないのだが。

cargo run などしてエラーを吐き出させた方がわかりやすかったかもしれない。

image

これだと builder に何かありそう、とさっさと気付いたかもしれない。
Cookbook に書いてあるんだから大丈夫だろう、と疑っていなかったのだが、メジャーバージョンも違うしね。

Example Usage Patterns を見ると builder から カスケードさせて続けて finish() まで呼べるのは unwrap() のようなことをしないでよい場合だけなのかな?
finish()? もあるのだし続けて良いかと思っていたのだが、ここら辺は理解不足だな。

あと、cargo run できても vscode のエラー表示がそのままになっていることがあった。
git checkout でブランチを切り替えたせいかもしれないが、解消法が分からず Reload Window したら直った。
rust-analyzer の reload なんとかでもよかったのかも。

writer: hiro99ma

 < Top page

コメント(Google Formへ飛びます)

GitHub

X/Twitter

Homepage

About me