如果我有一个结构:
struct Foo {
bar: int,
baz: bool
}
和一个默认构造函数,如:
impl Foo {
fn default() -> ~Foo {
Foo{bar: 0, baz: false}
}
}
我想要为我的构造函数进行单元测试:
#[test]
fn test_foo_default() {
let foo1 = Foo::default();
let foo2 = ~Foo{bar: 0, baz: false};
// What to put here to compare them?
}
如何最简单地比较两个结构以确保它们在内容,类型和所有权方面是相同的?
答案 0 :(得分:1)
让编译器为Foo导出Eq特征(如果可能),然后检查与assert_eq!
宏的相等性。宏也要求Show出于某种原因实现,所以我们也可以派生它。您的原始default()函数实际上没有编译,因为它尝试返回承诺Foo
的{{1}}。 ~Foo
和Foo
实际上是不同的类型,但您可以取消引用~Foo
并进行比较。
您可能也对默认特质感兴趣。
~Foo