Default
特征只有在派生类型的内容也实现#[derive(..)]
时才可以Default
d。这意味着特征越实施越容易使用。但是,我注意到std
中的某些类型缺少实现,尽管它们具有完全有效的默认值(有时取决于通用参数)。
Mutex<T>
和RWLock<T>
可以new(_)
(where T: Default
)CondVar
可以简单地通过CondVar::new()
Duration
可以派生(为了获得零持续时间,这些遗漏是否存在技术原因?
答案 0 :(得分:1)
有些人在使用Debug
实施时提出了类似的问题,请参阅“Missing Debug Implementations — #31869”,这些问题也只能在与Default
类似的情况下推导出来。
不幸的是,相应的PR“libcore: add Debug implementations to most missing types #32054”似乎表明某些类型不是Debug
,因为没有人为他们编写Debug
实现。其他一些类型对于实现应该做什么有争议,并且有些担心在标准库中添加它们。
可以合理地假设至少某些类型由于非技术原因而不是Default
。