Как настроить SublimeLinter-contrib-rustc для поиска "поршневого" ящика?

Я создаю игру Rust с поршнем, и я пытаюсь использовать пакет SublimeLinter Rust. Когда я открываю свои файлы .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;, чтобы быть первой строкой в ​​файле, я получаю ошибку "не могу найти ящик для" графики ".

РЕДАКТИРОВАТЬ: оказывается, что настройка "use-cargo" исправила проблему. Я добавил файл ".sublimelinterrc" в мой корень проекта с помощью этого содержимого:

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

Ответ 1

Я не смог воспроизвести вашу ошибку. Однако я перечислил, что я сделал, что, похоже, сработало. Возможно, вы увидите шаг, на котором мы расходимся, и это даст вам намек на то, где искать.

Я установил Sublime Text 3. Я выбрал стабильный канал, построил 3083. я установил управление пакетами, а затем три пакета:

  • SublimeLinter (3.5.1)
  • Sublime Linter-contrib-rustc (1.3.5)
  • Rust (2015.05.28.16.43.21)

Я перезапустил Sublime Text и открыл мой проект, который использует Cargo и зависит от других пакетов. Я открыл консоль (ctrl - `) и включен режим отладки, который вступает в силу при следующем перезапуске Sublime.

Поскольку у меня есть нестандартная установка Rust, я увидел, что Sublime не смог запустить rustc из-за отсутствия динамических библиотек. Затем я закрыл Sublime и открыл его с моего терминала: open /Applications/Sublime\ Text.app/Contents/MacOS/Sublime\ Text. Это использует переменные среды, установленные моей оболочкой.

Я увидел, что линтер жаловался, что моя библиотека не имела метода 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
...