Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging “如何写作”;非断言“;在rust中调试代码_Debugging_Rust_Assertion - Fatal编程技术网

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);
调试\断言\等式!(摘要、计算\缓慢\摘要);
巴兹(摘要)
}