C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

rust の wasm ターゲットのプロジェクトで surf-1.x を surf-2.x へ差し替える場合に必要な対応のメモ

surf-1.x 系では↓のように Cargo.toml にバージョン番号または所在だけ書けば wasm 向けにもそのまま使えました。べんり。

# surf-1.x
[dependencies]
surf = "1.0.3"

surf-2.x 系から↓のように Cargo.toml に default-featuresfeatures を明示的に設定しないと wasm ターゲットでビルドできなくなりました。

# surf-2.x
surf = {version = "2.1.0", default-features = false, features = ["wasm-client"]}

この設定を怠ると↓のようなエラーで依存 crates のビルド中に surf のビルドがエラーで失敗になります。

   Compiling surf v2.1.0
error[E0432]: unresolved import `http_client::isahc`
  --> C:\Users\usagi\.cargo\registry\src\github.com-1ecc6299db9ec823\surf-2.1.0\src\client.rs:12:26
   |
12 |         use http_client::isahc::IsahcClient as DefaultClient;
   |                          ^^^^^ could not find `isahc` in `http_client`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0432`.
error: could not compile `surf`.

surf-2.0 のリリースノートによくみると wasm 向けには features を手設定しないとダメになるよって書いてある&wasm-test/Cargo.tomlを参考にするとわかります。READMEでどどーんとWASMで使いたければこの設定してねとは書かれていないので少し不親切かもしれません。のでメモを残しました。