为什么测试会显示“panicked at Box<Any>”错误信息?

3
为什么会出现 panic?
pub fn testbool() -> bool {
    vec!['a', 'd', 'i', 'e', 'p', 'r']
        .iter()
        .enumerate()
        .find(|(_i, &c)| c != 'c')
        .is_none()
}

#[test]
fn test_testbool() {
    assert!(testbool(), true);
}

playground

---- test_testbool stdout ----
thread 'test_testbool' panicked at 'Box<Any>', src/lib.rs:11:5
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

这可能很简单,但我不理解它。

1个回答

8

您正在使用assert!。它期望第一个参数是一个布尔表达式。任何后续参数都被视为格式字符串和其参数:

assert!(testbool(), "Did not work: {}", 42);

thread 'test_testbool' panicked at 'Did not work: 42'

您可能需要删除assert!的第二个参数,或者转换为assert_eq!


我认为根本问题源自错误(#30143),在某些情况下允许非格式字符串用作格式字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接