Rust中的assert!和assert_eq!

在 Rust 中,assert!assert_eq! 都是宏(macros),用于进行断言(assertions)。它们的主要目的是在代码中进行测试和调试,确保程序在运行时满足预期条件。下面解释它们的区别以及何时使用哪个。

assert! 宏:

assert! 宏用于检查一个表达式是否为真(true),如果表达式为假(false),则会触发断言失败,程序会终止运行。

示例使用 assert! 宏:

rust 复制代码
rustCopy code
fn main() {
    let x = 5;
    assert!(x > 0, "x must be positive"); // 如果 x 不大于 0,则会触发断言失败
    println!("x is {}", x);
}

在上面的示例中,如果 x 不大于 0,assert! 宏会触发断言失败并输出错误信息,程序将停止运行。

assert_eq! 宏:

assert_eq! 宏用于比较两个值是否相等,如果不相等,则会触发断言失败。

示例使用 assert_eq! 宏:

ini 复制代码
rustCopy code
fn main() {
    let x = 5;
    let y = 3 + 2;
    assert_eq!(x, y, "x and y must be equal"); // 如果 x 和 y 不相等,则会触发断言失败
    println!("x and y are equal");
}

在上面的示例中,如果 xy 不相等,assert_eq! 宏会触发断言失败并输出错误信息,程序将停止运行。

区别和选择:

  • 使用 assert! 时,只需要传递一个表达式,它会检查表达式是否为真。适用于对条件是否满足进行断言的情况。
  • 使用 assert_eq! 时,需要传递两个值,它会比较这两个值是否相等。适用于验证两个值是否相等的情况。

想验证某个条件是否满足,使用 assert!。如果你想验证两个值是否相等,使用 assert_eq!。选择哪个宏取决于你的测试和调试需求。from刘金,转载请注明原文链接。感谢!

相关推荐
浪费笔墨1 小时前
Rail开发日志_9
rust
编码浪子16 小时前
趣味学RUST基础篇(智能指针_结束)
开发语言·算法·rust
几颗流星1 天前
Rust 常用语法速记 - 解构赋值
后端·rust
李游Leo1 天前
Rust 开发环境安装与 crates.io 国内源配置(Windows / macOS / Linux 全流程)
windows·macos·rust
几颗流星1 天前
Rust 常用语法速记 - 循环
后端·rust
l1t1 天前
DeepSeek辅助编写的利用quick_xml把xml转为csv的rust程序
xml·开发语言·人工智能·rust·解析器·quick-xml
BoredWait1 天前
《步进电机》 rust 嵌入式esp23
rust·嵌入式
编码浪子2 天前
趣味学RUST基础篇(函数式编程闭包)
开发语言·算法·rust
光影少年2 天前
css优化都有哪些优化方案
前端·css·rust
focksorCr2 天前
编译缓存工具 sccache 效果对比
c++·缓存·rust