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

llo*_*giq 5 rust

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

  • Mutex<T>并且RWLock<T>可以通过new(_)(where T: Default)实现
  • CondVar 可以简单地实现 CondVar::new()
  • Duration可以导出(获得零持续时间,这是一个合理的默认值)

这些遗漏有技术原因吗?

mca*_*ton 1

有些人对实现提出了类似的问题Debug,请参阅\xe2\x80\x9cMissing Debug Implements \xe2\x80\x94 #31869\xe2\x80\x9d ,它也只能在与Default.

\n\n

不幸的是,相应的 PR \xe2\x80\x9c libcore: add Debugimplements to most Missing types #32054 \xe2\x80\x9d 似乎表明某些类型不仅仅是因为没有人为它们Debug编写实现。Debug其他一些类型对于实现应该做什么存在争议,并且对于将它们添加到标准库中存在一些担忧。

\n\n

可以合理地假设至少某些类型不是Default出于相同的非技术原因。

\n