#debugging #inspection #print #ic #line #printing

icecream

使用检查打印调试信息

3 个不稳定版本

使用旧 Rust 2015

0.1.0 2018年4月8日
0.0.2 2018年2月28日
0.0.1 2018年2月27日

#13 in #ic

Download history 31/week @ 2024-03-04 36/week @ 2024-03-11 18/week @ 2024-03-18 22/week @ 2024-03-25 88/week @ 2024-04-01 13/week @ 2024-04-08 23/week @ 2024-04-15 25/week @ 2024-04-22 14/week @ 2024-04-29 23/week @ 2024-05-06 16/week @ 2024-05-13 22/week @ 2024-05-20 22/week @ 2024-05-27 19/week @ 2024-06-03 22/week @ 2024-06-10 25/week @ 2024-06-17

89 每月下载量

MIT 许可证

12KB
201

icecream-rs

Build Status

为 Rust 提供使用检查打印调试信息,灵感来自 Python 的 icecream

我在编写 Rust 时经常使用大量的打印调试。 icecream 提供了 ic!()ice!() 宏,使打印调试更方便,通过格式化打印语句并添加有用的信息,如

  • 行号
  • 调用函数
  • 模块名称
  • 文件名称

使用 ic!() 进行调试

// src/example.rs
#[macro_use]
extern crate icecream;

mod a_module {
    fn some_function() {
        let x = Some(99);
        ic!();
        ic!(x);
        ic!(x.unwrap() + 1);
        ice!();
    }
}

纯文本

ic!() 打印文件名和行号。

example.rs:8

匹配标识符

ic!(x) 打印变量的名称和以 std::fmt::Debug 格式化的值。

example.rs:9 ❯ x = Some(99)

匹配表达式

ic!(x.unwrap() + 1) 计算内部表达式并打印结果值。

example.rs:10 ❯ x.unwrap() + 1 = 100

打印更多信息

ice!() 打印更长的输出,包括调用模块和函数。

example.rs::a_module::some_function:11

配置 ic!()

您还可以配置打印输出中使用的符号字符。

// main.rs
#[macro_use]
extern crate icecream;

fn main() {
    icecream::set_equals_symbol(" -> ");
    let x = 1;
    ic!(x);
}
main.rs:7 ❯ x -> 1

测试

测试必须使用 --nocapture 标志单线程运行。

RUST_TEST_THREADS=1 cargo test -- --nocapture

依赖项

~2.5–3.5MB
~73K SLoC