为什么测试失败并显示消息“在Box <Any>恐慌”?

VsM*_*VsM 3 panic rust

为什么会出现这种恐慌?

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);
}
Run Code Online (Sandbox Code Playgroud)

操场

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);
}
Run Code Online (Sandbox Code Playgroud)

这可能很简单,但我不明白。

She*_*ter 7

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

assert!(testbool(), "Did not work: {}", 42);
Run Code Online (Sandbox Code Playgroud)
assert!(testbool(), "Did not work: {}", 42);
Run Code Online (Sandbox Code Playgroud)

您可能想要将第二个参数删除assert!或切换到assert_eq!


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