如何配置 SublimeLinter-contrib-rustc 以找到“活塞”板条箱?

Posted

技术标签:

【中文标题】如何配置 SublimeLinter-contrib-rustc 以找到“活塞”板条箱?【英文标题】:How do I configure SublimeLinter-contrib-rustc to find the "piston" crate? 【发布时间】:2015-10-01 03:33:00 【问题描述】:

我正在用 Piston 构建一个 Rust 游戏,我正在尝试使用 SublimeLinter Rust package。当我打开 .rs 游戏文件时,出现以下 linter 错误:

extern crate piston; // linter error: "can't find crate for 'piston'"

如果我检查 Sublime 控制台,我可以看到 linter 正在寻找 rustc:

SublimeLinter: rust activated: /usr/local/bin/rustc

我在控制台中没有看到任何明显的错误消息。我在 Cargo.toml 中将活塞列为依赖项,并且我能够成功 cargo run

我是一个完整的 Rust 和 SublimeLinter 新手。

无论我先导入哪个导入,我都会遇到类似的错误;例如,如果我将extern crate graphics; 移动到文件中的第一行,我会收到错误“找不到'graphics' 的板条箱”。

编辑:事实证明启用“使用货物”设置解决了这个问题。我在项目根目录中添加了一个“.sublimelinterrc”文件,其中包含以下内容:


  "linters": 
    "rust": 
      "use-crate-root": true,
      "use-cargo": true
    
  

【问题讨论】:

有趣,我也遇到了这个问题,但启用use-cargo 为我解决了这个问题。您是否尝试过设置 crate root 和 use-crate-root 设置? 【参考方案1】:

我无法重现您的错误。但是,我将列出我所做的似乎有效的事情。也许你会看到我们分歧的一步,这会给你一个提示。

我安装了Sublime Text 3。我选择了stable频道,build 3083。我installed Package Control,然后三个包:

    SublimeLinter (3.5.1) Sublime​Linter-contrib-rustc (1.3.5) 生锈 (2015.05.28.16.43.21)

我重新启动了 Sublime Text 并打开了我的一个项目,该项目使用 Cargo 并依赖于其他包。我打开了控制台(ctrl-`)和enabled debug mode,在下次Sublime重启时生效。

因为我有非标准的 Rust 安装,我看到 Sublime 由于缺少动态库而无法运行rustc。然后我关闭了 Sublime,并从我的终端打开它:open /Applications/Sublime\ Text.app/Contents/MacOS/Sublime\ Text。这使用了我的 shell 设置的环境变量。

我看到 linter 抱怨我的库没有main 方法,所以我enabled the use-cargo option。

SublimeLinter: rust output:
error: main function not found
error: aborting due to previous error 

更改use-cargo 设置后,我在代码中造成了故意的语法错误,并看到它被突出显示。然后我将 extern crate 行中的 crate 命名错误,并看到它被突出显示。

在任何时候寻找板条箱似乎都没有问题。我可以看出 cargo 正在通过控制台使用:

SublimeLinter: rust output:
    Updating registry `https://github.com/rust-lang/crates.io-index`
 Downloading rand v0.3.9
...

【讨论】:

谢谢!原来我没有正确启用“使用货物”设置。

以上是关于如何配置 SublimeLinter-contrib-rustc 以找到“活塞”板条箱?的主要内容,如果未能解决你的问题,请参考以下文章

如何动态修改Mysql的配置参数

如何配置我的 emacs 配置?

如何安装,配置MongoDB

如何安装,配置MongoDB

如何配置PostgreSQL允许被远程访问

什么是拦截器,如何配置拦截器,如何使用拦截器