In Praise of Exhaustive Destructuring
2 days ago
- #Destructuring
- #Rust
- #Software Safety
- 作者最初不喜欢Rust在解构结构体时必须列出所有字段或使用'..'的要求,觉得它不如TypeScript或Haskell方便。
- 后来作者意识到,显式结构体解构(不使用'..'列出所有字段)通过强制在添加新字段时更新代码,增强了软件的安全性。
- 向WeatherReading结构体添加'wind_speed'字段后,如果某个使用字段访问('.'语法)的函数未更新,可能会导致难以被编译器警告发现的错误。
- 在函数参数或方法内部使用结构体解构时,如果遗漏新字段,会触发编译时错误,从而确保所有字段都被考虑在内。
- 这种技术在多层级应用(如CRUD服务)中尤其有用,可以在添加或更改字段时确保一致性。
- 观察到经常被一起解构的字段组,可能暗示需要将其重构为单独的结构体,以改进设计。