11

我正在用 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;到文件的第一行,我会收到错误“找不到'图形'的箱子”。

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

{
  "linters": {
    "rust": {
      "use-crate-root": true,
      "use-cargo": true
    }
  }
}
4

1 回答 1

3

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

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

  1. SublimeLinter (3.5.1)
  2. 崇高​Linter-contrib-rustc(1.3.5)
  3. 锈(2015.05.28.16.43.21)

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

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

我看到 linter 抱怨我的库没有main方法,所以我启用了use-cargo选项

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

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

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

SublimeLinter: rust output:
    Updating registry `https://github.com/rust-lang/crates.io-index`
 Downloading rand v0.3.9
...
于 2015-07-30T15:09:25.733 回答