通常的assert_eq!
宏要求 PartialEq 跨结构实现 - 我有一个特征对象向量Vec<Box<dyn Element>>
,其中 Element 是需要调试的特征,pub trait Element: std::fmt::Debug
。我不能同样要求PartialEq
,因为它需要 Self 作为类型参数,编译器无法将其制成特征对象。
我见过的解决方案涉及在特征定义中需要一个 eq 关联函数,这对我没有吸引力,因为这只是调试代码,而且我认为包含一个无用的方法是没有好处的并且可能会在cargo test
构建之外对 trait 的 API 进行混淆。
有没有其他(可能不安全的)方法来比较两个特征对象?