Rustの網羅的デストラクチャリングがコードを安全にする理由
In Praise of Exhaustive Destructuring
Rustで構造体をデストラクチャリングする際、全フィールドを列挙するか`..`を使う必要があり、当初は面倒に感じた著者。しかし、フィールドアクセスに`.`を使うよりも網羅的デストラクチャリングを好むようになったのは、メンテナンスが安全になるからだ。例えば、気象データから危険を検出する関数に新しいフィールド(風速)を追加した場合、`.`構文ではコンパイラが警告を出さないが、網羅的デストラクチャリングを使えば未処理のフィールドをエラーとして検出できる。このテクニックはCRUDサービスのレイヤー間変換(From実装)で特に有効で、フィールド追加時に伝播の要否を強制される。TypeScriptでは`Required`型を使った同様のトリックがあり、Haskellにはまだ解決策がないが提案が進行中。
Rustコンパイラは、関数を網羅的デストラクチャリングで書いていれば、`wind_speed`フィールドの追加を見逃さずに警告してくれたはずです。