📦
cargo-component 0.7.0へのアップグレード
cargo-componentから、コード生成にwit-bindgenを利用するようになりました。これに伴い、依存するライブラリーやソースコードを次のように変更する必要があります:
- cargo-component-bindingsを依存するライブラリーから削除
- wit-bindgenを依存するライブラリーに追加
-
cargo_component_bindings::generate!();
を、ソースコードから削除 -
mod bindings
をソースコードに追加
一方、Cargo.tomlにあるcargo-component用の設定は変更する必要がありません。参照するワールド名や、ownershipの設定は、0.7.0へ移行後も有効です。
依存するライブラリーの変更
以下の2つが該当します。
- cargo-component-bindingsを依存するライブラリーから削除
- wit-bindgenを依存するライブラリーに追加
どちらもコマンドで更新できます:
% cargo component remove cargo-component-bindings
% cargo component add wit-bindgen
ソースコードの変更
これまでは、ソースコード中のマクロ呼び出しによってwitファイルからのコード生成が行われました。マクロはビルド次に処理されるため、生成されたコードはtarget/bindings
フォルダに出力されていました。0.7.0からは、cargo-componentコマンドが、ビルドの前処理としてコード生成を行います。そのため、マクロ呼び出しは不要となりました。
また、生成されたコードはsrc/bindings.rs
に出力されます。生成されたコードはビルド時には他のソースコードと同様に扱われるため、ビルド対象となるように、モジュールツリーに登録する必要があります。
上記の修正をlib.rs
に行うと、次のようになります:
-cargo_component_bindings::generate!();
+mod bindings;
Discussion