通常的assert_eq!宏要求对于一个结构体实现PartialEq - 我有一个由trait对象组成的向量,Vec>,其中Element是需要Debug的特性,pub trait Element: std::fmt::Debug。我无法像这样要求PartialEq,因为它需要Self作为类型参数,编译器无法将其转换为特质对象。
我看到的解决方案涉及在特质定义中要求一个eq关联函数,但我不喜欢这个方法,因为这只是调试代码,我认为在cargo test构建之外包含一个可能是无用且潜在混淆的方法对特质API来说没有好处。
是否有其他(潜在的不安全)方法来比较两个特质对象?
我看到的解决方案涉及在特质定义中要求一个eq关联函数,但我不喜欢这个方法,因为这只是调试代码,我认为在cargo test构建之外包含一个可能是无用且潜在混淆的方法对特质API来说没有好处。
是否有其他(潜在的不安全)方法来比较两个特质对象?
MyElement
和YourElement
的问题——如果比较Debug
输出足够了,那很好,但在大多数情况下,当比较不同类型的值时,你可能会想要使用更类似于链接问题中所找到的东西。 - trent