首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rust-analyzer错误"could resolve宏`$crate::format_args`“是什么意思?我如何修复它?

rust-analyzer错误"could resolve宏`$crate::format_args`“是什么意思?我如何修复它?
EN

Stack Overflow用户
提问于 2020-12-10 03:25:33
回答 2查看 4.4K关注 0票数 18

我在Visual Studio Code上使用rust-analyzer版本0.2.408。

我正在编写一个命令行应用程序,它涉及到在终端中居中显示文本。这是我为此编写的函数:

代码语言:javascript
复制
use console::{Alignment, pad_str};

fn get_padded_row(row: &str, width: u16, symbol: Option<char>) -> String {
    let symbol = symbol.unwrap_or(' ');
    return pad_str(row, width as usize, Alignment::Center, None)
        .to_string()
        .replace(' ', &symbol.to_string());
}

这个函数运行得很好,并且没有任何错误。然后我写了一个测试:

代码语言:javascript
复制
#[cfg(test)]
mod tests {
    use crate::get_padded_row;

    #[test]
    fn row_padding_dashes() {
        let padded_row = get_padded_row("hello", 15, Some('-'));
        assert_eq!(
            padded_row, "-----hello-----".to_string(),
            "`get_padded_row` was not correct, got `{}`", padded_row
        );
    }
}

代码仍然工作得很好。cargo runcargo test都可以工作,该函数通过测试,并且cargo check没有返回任何问题。但是rust-analyzer给出了一个错误,突出显示了从use语句中的tr};return后面的p的所有内容:“无法解决宏$crate::format_args rust-analyzer(宏错误)”。搜索此错误不会返回任何内容。VSCode将我链接到rust-analyzer user manual,它只显示“对于宏扩展错误显示此诊断”。重新启动VSCode和重新安装防锈分析仪没有任何作用。错误总是会回来,并突出显示相同的奇怪的特定区域。我发现在安装了防锈分析仪的同时摆脱它的唯一方法就是删除测试。

从这个错误是如何与宏展开有关的,以及如何删除测试来修复这个问题,我想这是由#[test]宏引起的,但奇怪的是,rustc发现我的代码没有任何问题,而rust-analyzer却被这个错误吓坏了。到目前为止,我使用rust-analyzer比使用官方Rust VSCode扩展有更好的体验,但我即将切换回来解决这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-10 03:45:08

这是一个bug in rust-analyzer。现在,您可以在settings.json中禁用该警告

代码语言:javascript
复制
"rust-analyzer.diagnostics.disabled": [
  "macro-error"
]

bug是在晚上修复的,所以你可以从GitHub安装nightly binary of rust-analyzer,或者你可以只等几天,直到修复程序落在稳定的地方。

或者,您可以降级到rls版本0.2.400,因为该错误是由版本0.2.408中的提交引起的

代码语言:javascript
复制
Extensions Icon -> rust-analyzer -> Manage (gear icon) -> Install Another Version
票数 26
EN

Stack Overflow用户

发布于 2021-03-26 15:01:04

三个月后,似乎有了bug with Nightly release?不确定。

我将unresolved-macro-call添加到诊断:已禁用防锈分析仪的设置。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65223576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档