rust: deprecatedと言われても
2025/10/19
Rust の勉強がてら BDK を使って Bitcoin トランザクションに署名するプログラムを作っている。
bdk_wallet が v2.2.0 になっていたので v2.1.0 から更新したのだが、署名周りで deprecated 警告が出てきた。

ただ、前回からのコード差分を見ても #![allow(deprecated)] が付いたくらいな気がする。見逃しているだけかもしれないが。
Attributes
#![~] はアノテーションだろう、と予想を立てたのだが、残念、アトリビュートであった。
Inner が #![~] で、Outer が #[~]。
allow(C)
attributes の中身 allow(C) は、C のチェック機構を無効にして警告を表示しなくなるという意味。
ignore(C) の方がわかりやすい気もするが、英語は苦手なので下手なことはいうまい。
deprecated
deprecated で deprecated にするバージョンの範囲などを指定するものだ。
#[deprecated(
since = "2.2.0",
note = "PSBT signing was moved to `bitcoin::psbt` module"
)]
pub mod signer;
attributes が影響を及ぼすのは次の行だけなのかな?
であれば pub mod signer だけである。
それを #![allow(deprecated)] で無視しているということか。
無視するが警告は出すので今回のようになったということなのかね。
でも allow(C) は “will go unreported” なので何も報告しないのかと思ったんだがどうなんだろう。
対処
note は代替手段をなるべく書くらしいので、それを信じるなら bitcoin::psbt を使えば良いことになる。
[以前試した(https://blog.hirokuma.work/2025/09/20250918-rst.html)ときは PSBT ではなく普通にやっただけだった。
bitcoin::psbt を使ってみよう。
以前作っていた rust-bitcoin を使ったサンプルに bitcoin::psbt を使った署名を追加した。
動きはするのだが、あってるのか?
そして実装がめんどくさいぞ。
issue#70 を見ると v3.0.0 のときには API を削除する代わりに何かヘルパー関数を提供してくれそうな感じだ。 ありがたく待つことにしよう。