macro_rules! assert { ($cond:expr $(,)?) => { ... }; ($cond:expr, $($arg:tt)+) => { ... }; }
Expand description
声明在运行时布尔表达式为 true
。
如果提供的表达式在运行时无法评估为 true
,则将调用 panic!
宏。
Uses
断言总是在调试和发行版本中被检查,并且不能被禁用。
有关默认情况下未在发行版中启用的断言,请参见 debug_assert!
。
不安全的代码可能依赖 assert!
来强制执行运行时不变量,如果违反该规定,可能会导致不安全。
assert!
的其他用例包括在安全代码中测试和强制执行运行时不变量 (违反该规则不会导致不安全)。
自定义消息
此宏具有第二种形式,其中可以提供自定义 panic 消息 (带有或不带有用于格式化的参数)。
有关此格式的语法,请参见 std::fmt
。
仅当断言失败时,才对用作 format 参数的表达式求值。
Examples
// 这些断言的 panic 消息是给定表达式的字符串化值。
assert!(true);
fn some_computation() -> bool { true } // 一个非常简单的函数
assert!(some_computation());
// 使用自定义消息进行断言
let x = true;
assert!(x, "x wasn't true!");
let a = 3; let b = 27;
assert!(a + b == 30, "a = {}, b = {}", a, b);
Run