我目前正在制作一个嵌入式系统. 为此,我有两个不同的死机处理程序,基于它是正常运行还是作为测试运行. #[cfg(test)]个 对于测试死机处理程序和 #[cfg(not(test))] 对于正常的panic 处理程序来说.

铁 rust 分析器说:由于#[cfg]指令:已启用测试,代码处于非活动状态

并使该函数变灰. 测试从来没有显式设置过,所以我不能只是更改它,我不想禁用整个工作区中灰显的非活动代码.

是否有办法禁用 rust 检分析仪判断测试CFG,或仅针对此功能禁用灰灯

我试着找到关于测试旗帜的信息,但我找不到任何信息,如果它很重要,我正在使用VS代码

推荐答案

在VSCode的工作区设置中,设置以下各项:

"rust-analyzer.cargo.extraEnv": {
  "RUSTFLAGS": "--cfg rust_analyzer"
}

这将使#[cfg(rust_analyzer)]能够进行防 rust 分析器元数据判断.

然后,将#[cfg(not(test))]替换为#[cfg(any(not(test), rust_analyzer))],将#[cfg(test)]替换为#[cfg(all(test, not(rust_analyzer)))].这将像往常一样禁用和启用测试功能,但当在防 rust 分析仪中运行时,仅启用非测试功能.

Important:只有当您不需要为您的工作区设置特殊的RUSTFLAGS时,这才会起作用.

Rust相关问答推荐

将已知大小的切片合并成一个数组,

将内部类型作为参数的泛型 struct 上的方法

使用 struct 外部的属性来改变 struct 的原始方式

这种获取-释放关系是如何运作的?

"value is never read警告似乎不正确.我应该忽略它吗?

在rust sqlx中使用ilike和push bind

避免在Collect()上进行涡鱼类型的涂抹,以产生<;Vec<;_>;,_>;

不能在一个代码分支中具有不变的自身borrow ,而在另一个代码分支中具有可变的self borrow

如何防止Cargo 单据和Cargo 出口发布( crate )项目

无法实现整型类型的泛型FN

Rust 中多个 & 符号的内存表示

如何在 Rust 中将函数项变成函数指针

Rust 文件未编译到 dll 中

为什么 Rust 的临时值有时有参考性有时没有?

为什么 `tokio::join!` 宏不需要 Rust 中的 `await` 关键字?

如何在 Rust 的 Hyper 异步闭包中从外部范围正确读取字符串值

Rust:`sort_by` 多个条件,冗长的模式匹配

`use std::error::Error` 声明中断编译

Rust,使用枚举从 HashMap 获取值

`if let` 只是另一种编写其他 `if` 语句的方式吗?