gpt4 book ai didi

rust - 您自己的结构派生属性和实现特征之间有什么区别?

转载 作者:行者123 更新时间:2023-12-03 11:27:54 25 4
gpt4 key购买 nike

我想知道,例如#[derive(Debug)]属性和由我自己为某些结构实现std::fmt::Debug特性(或可以与derive属性一起添加的任何其他特性)之间有什么区别,前提是我的实现是有效的?会有编译时差吗?性能差异?
什么时候应该使用derive属性,什么时候应该自己实现特征?

最佳答案

derive只是提供了该特性的一般有用的实现(默认实现,通常是用户想要的)。
如果派生的行为正是您想要的,就应该派生它。这对于一般有用的行为是很方便的,例如(Partial)Eq的结构相等性,为Debug打印一个字面意义的结构,等等...使用结构/特征时没有区别。
派生只是宏(custom derives are proc macros)的一种特例,因此编译的速度将无限慢:rustc需要先运行proc宏,然后编译其输出。我怀疑这是否会带来真正的改变。

关于rust - 您自己的结构派生属性和实现特征之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64393455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com