为什么默认没有为Mutex,RWLock,CondVar,Duration实现?

时间:2016-04-07 13:21:08

标签: rust

Default特征只有在派生类型的内容也实现#[derive(..)]时才可以Default d。这意味着特征越实施越容易使用。但是,我注意到std中的某些类型缺少实现,尽管它们具有完全有效的默认值(有时取决于通用参数)。

  • Mutex<T>RWLock<T>可以new(_)where T: Default
  • 实施
  • CondVar可以简单地通过CondVar::new()
  • 实施
  • Duration可以派生(为了获得零持续时间,这是明智的默认

这些遗漏是否存在技术原因?

1 个答案:

答案 0 :(得分:1)

有些人在使用Debug实施时提出了类似的问题,请参阅“Missing Debug Implementations — #31869”,这些问题也只能在与Default类似的情况下推导出来。

不幸的是,相应的PR“libcore: add Debug implementations to most missing types #32054”似乎表明某些类型不是Debug,因为没有人为他们编写Debug实现。其他一些类型对于实现应该做什么有争议,并且有些担心在标准库中添加它们。

可以合理地假设至少某些类型由于非技术原因而不是Default