我想知道,假设我的实现是有效的,例如#[derive(Debug)]属性和我自己实现std::fmt::Debug某些结构的特征(或可以用derive属性添加的任何其他特征)之间有什么区别?编译时间会有差异吗?性能差异?
什么时候应该使用derive属性,什么时候应该自己实现特征?
derive只是提供了该特征的通常有用的实现(通常是用户想要的默认实现)。
如果 derive 的行为是您正在寻找的,那么您应该 derive,仅此而已。这对于一般有用的行为来说很方便,例如 (Partial)Eq 的结构相等、为 Debug 打印字面意义的结构等。\xe2\x80\xa6 在使用结构/特征时,它没有什么区别。
\n派生只是宏的一种特殊情况(自定义派生是 proc 宏),因此编译速度会无限慢:rustc 需要先运行 proc 宏,然后编译其输出。但我怀疑这会产生任何真正的区别。
\n| 归档时间: |
|
| 查看次数: |
775 次 |
| 最近记录: |