我有两个(我希望)等价的函数,比如:
fn slow_summary(foo: &Foo) -> Bar
fn fast_summary(foo: Foo) -> Bar
我想在调用站点添加一个debug_assert语句,使快速摘要给出与慢速摘要相同的结果。如。
fn bar(foo: Foo) -> Baz {
let summary = fast_summary(foo);
debug_assert_eq!(summary, slow_summary(&foo));
baz(summary)
}
但我不能这么做因为
foo
已被对的调用占用
fast_summary
(
Foo
不是一个
Clone
或
Copy
.我能行
克隆
然后
clone
但这仍然会带来不必要的运行时债务,也会让代码看起来更难看)。理想情况下,我会打电话
slow_summary
第一
和
然后
呼叫
快速汇总
,但在确保
慢_摘要
仅在调试断言打开时调用?