Debugging “如何写作”;非断言“;在rust中调试代码
我有两个(我希望)等效函数,如:Debugging “如何写作”;非断言“;在rust中调试代码,debugging,rust,assertion,Debugging,Rust,Assertion,我有两个(我希望)等效函数,如: 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(&am
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)
}
但是我不能这样做,因为调用fast\u summary
(Foo
不是Clone
或Copy
的实例。我可以让它Clone
然后Clone
它,但这仍然会带来不必要的运行时债务,也会让代码看起来更难看)。理想情况下,我会先调用slow\u summary
。然后再调用fast\u summary
,但我如何做到这一点,同时仍然确保slow\u summary
仅在启用调试断言时调用?您可以使用调试断言
条件:
fn条(foo:foo)->Baz{
让计算的\u慢\u摘要:Bar;
#[cfg(debug_断言)]
{
计算出的\u slow\u summary=slow\u summary(&foo);
}
let summary=快速_summary(foo);
调试\断言\等式!(摘要、计算\缓慢\摘要);
巴兹(摘要)
}