当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust debug_assert用法及代码示例


本文简要介绍rust语言中 Macro std::debug_assert 的用法。

用法

macro_rules! debug_assert {
    ($($arg : tt) *) => { ... };
}

在运行时断言布尔表达式是true

如果在运行时无法将提供的表达式计算为 true,这将调用 panic! 宏。

assert! 一样,此宏也有第二个版本,可以提供自定义紧急消息。

用途

assert! 不同,默认情况下 debug_assert! 语句仅在非优化构建中启用。除非将 -C debug-assertions 传递给编译器,否则优化的构建将不会执行 debug_assert! 语句。这使得debug_assert! 对于那些成本太高而无法在发布版本中出现但在开发过程中可能会有所帮助的检查很有用。扩展debug_assert! 的结果总是类型检查。

未经检查的断言允许处于不一致状态的程序继续运行,这可能会产生意想不到的后果,但不会引入不安全性,只要这仅发生在安全代码中即可。然而,断言的性能成本通常是不可测量的。因此,仅在彻底分析后才鼓励将 assert! 替换为 debug_assert!,更重要的是,仅在安全代码中!

例子

// the panic message for these assertions is the stringified value of the
// expression given.
debug_assert!(true);

fn some_expensive_computation() -> bool { true } // a very simple function
debug_assert!(some_expensive_computation());

// assert with a custom message
let x = true;
debug_assert!(x, "x wasn't true!");

let a = 3; let b = 27;
debug_assert!(a + b == 30, "a = {}, b = {}", a, b);

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Macro std::debug_assert。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。