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");
}

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

区别和选择:

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

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

相关推荐
alwaysrun17 分钟前
Web之wasm-pack详解
前端·rust·web·wasm
DongQiShanRen3 小时前
六根硬件映射(下):物理闭环五步法,抽一条已实装的看
大数据·jvm·人工智能·算法·rust·哈希算法·集成学习
Zenova EdgeOS5 小时前
Rust TUI 实战:用 ratatui 构建工业边缘终端界面
开发语言·后端·rust·工业网关
遇码5 小时前
不用转场引擎做幻灯片转场:相机滑动、黑场淡入与真全屏的完整做法
人工智能·数码相机·ai·rust·大模型·agent
lpfasd12317 小时前
node-sass 停止维护!老项目迁移 Dart Sass 完整教程
前端·rust·sass
Flynt17 小时前
我把真实的 ES 查询怼到 7059 星的 Rust 搜索引擎上:1366/1369 的兼容承诺,裂了 3 个缝
elasticsearch·搜索引擎·rust
小杍随笔20 小时前
egui 0.37 升级实录:卡顿修复与5倍性能回退
windows·rust·egui
geovindu1 天前
rust: Iterator Pattern
开发语言·后端·设计模式·rust·行为模式·迭代器模
gopher95111 天前
RUST:错误处理 thiserror 详解
开发语言·后端·rust
geovindu2 天前
rust:Memento Pattern(续)
开发语言·后端·设计模式·rust·行为模式·备忘录模