善用編譯器的檢查
善用編譯器的檢查
如果你的專案中,解構體常常會修改,那請不要用..Default::default()
,雖然偷懶少寫了一點,但是修改時編譯器不會提示。
#[derive(Default)]
struct Foo {
a: i32,
b: i32,
c: i32,
}
fn main() {
let f = Foo {
a: 10,
..Default::default()
};
}
上方範例中,如果在Foo
中增加一個欄位d
,而Foo
使用的地方散落在各地且非常隱密,那麼使用的地方不會被編譯器報出錯誤,就需要多一些時間去尋找,這讓維護起來比較不方便。當然這取決於使用場景,可以取捨究竟要省一點點行數,還是比較需要編譯器的提示。
希望這個技巧帶給讀者一些維護上的啟發。