You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译Redlotus-rs项目时调用PanicInfo::message触发类型不匹配错误

解决Rust Bootkit编译时的类型不匹配错误

错误原因

你遇到的E0308类型不匹配错误,核心问题是代码错误地将PanicInfo::message()的返回值当作Option类型处理,但当前使用的Rust版本中,core::panic::PanicInfo::message()直接返回PanicMessage<'_>结构体,而非Option<PanicMessage<'_>>,导致if let Some(message) = info.message()的写法触发类型不匹配。

修复方案

方案1:直接输出panic消息

PanicMessage已经实现了Display trait,无需用if let Some判断,直接输出即可:

#[panic_handler]
fn panic_handler(info: &core::panic::PanicInfo) -> ! {
    if let Some(location) = info.location() {
        log::error!(
            "[-] Panic in {} at ({}, {}):",
            location.file(),
            location.line(),
            location.column()
        );
        // 直接输出panic消息,无需Option判断
        log::error!("[-] {}", info.message());
    }

    loop {}
}

方案2:切换到项目指定的Rust版本

如果项目依赖旧版Rust(该版本中message()返回Option<&PanicMessage>),可以通过rustup切换到项目要求的版本:

# 查看项目根目录的rust-toolchain文件获取指定版本
rustup override set <项目要求的Rust版本号>

内容的提问来源于stack exchange,提问作者saw3l1y

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:00:06