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

Rust测试疑难:Cargo误判tests模块导入未使用,明明已用却报警告

问题原因与解决方案

问题根源

你的tests模块没有添加#[cfg(test)]属性,导致cargo build会编译该模块,但#[test]标记的测试函数在常规构建过程中会被忽略——测试函数里的代码不会被执行,因此导入的f被判定为未使用,从而触发警告。

解决方案

给tests模块加上#[cfg(test)]属性,这样只有执行cargo test时才会编译该模块,常规cargo build会完全跳过它,不会产生未使用导入的警告。修改后的代码如下:

pub fn f() {}

#[cfg(test)]
mod tests {
    use crate::a::f;

    #[test]
    fn test_f() {
        f();
    }
}

补充说明

  • cargo build仅编译库或二进制目标代码,不会处理测试相关代码;cargo test会编译所有标注了#[cfg(test)]的模块和#[test]函数。
  • 若使用use super::*,同样需要给tests模块添加#[cfg(test)]属性,才能避免常规构建时的未使用导入警告。

内容的提问来源于stack exchange,提问作者Green 绿色

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 10:42:22