Полная настройка Rust в VSCode / Atom Issue - PullRequest
1 голос
/ 16 января 2020

Это длинный пост, извините.

Я пытался запустить проект, используя Rust, но столкнулся с проблемой: он просто не работает правильно на Linux в VSCode / Atom.

Потраченное впустую 3 дня, поиск в Интернете, пробование разных уроков / видео - ничего не получилось + большая часть материала относится к 2017 году. Я пробовал чат Matrix, но никто не знал, что делать. Git тоже не имеет решения, так как люди продолжают предлагать очень случайные вещи, такие как «изменить эту переменную в файле toml на что-то другое и обратно»

Git: https://github.com/rust-lang/rls-vscode/issues/513

Я установил (и переустанавливал ржавчину много раз за последние 3 дня), и он прекрасно работает с терминала, но не в редакторе.


Две проблемы:

  1. Редакторы не видят ящики, поэтому вы не можете запустить свой код из редактора.
  2. Автозаполнение не работает (работает только на std, но не на дополнительных ящиках). добавить).

Что я сделал (из многих других вещей):

  1. установить Rust (на компьютеры Manjaro и Debian): curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Попробовал stable, beta, nightly (для racer) Просто снова сделал чистую установку:

stable installed - rustc 1.40.0 (73528e339 2019-12-16)

Rust is installed now. Great!

Установлено Rust (rls) rust-lang.rust расширение в VSCode (и ржавчина в Atom)

Создан новый проект: cargo new test_proj и добавлен новый rand = "0.6" в [зависимости] и подержанный автомобиль go сборка. Он построил rand

Добавлено "rust-client.enableMultiProjectSetup": true в файл настроек, чтобы избежать предупреждения: A Cargo.toml file must be at the root of the workspace in order to support all features. Alternatively set rust-client.enableMultiProjectSetup=true in settings. от Rust (rls)

Я также устанавливаю расширение 'code runner', которое использую с Python, C ++ и Java для запуска кода из редактора.


Так что теперь У меня есть только основное веселье c, и оно отлично работает в редакторе:

enter image description here

enter image description here


Теперь я добавляю rand, и он, кажется, работает, и делает НЕКОТОРЫЕ автозаполнения ...

enter image description here

enter image description here


Но теперь он перестает работать:

enter image description here


ОК, я закончу sh код и попробуйте запустить его, и теперь мы больше не можем его запускать, поскольку ящик отсутствует:

enter image description here


OK давайте попробуем Ctrl + Shift + B и попробуем автомобиль go сборка:

enter image description here

enter image description here

По какой-то странной причине это выглядит ng в / media / Work / Work / rust_code, а не в / media / Work / Work / rust_code / test_proj /


И последнее: давайте попробуем запустить в терминале:

enter image description here

Так что все работает отлично.

Извините за длинное сообщение, но я потратил 3 дня впустую, но до сих пор не могу его поднять и работает. Кто-нибудь вообще смог это настроить?

Это должен быть Atom или VSCode, так как у меня есть все остальные языки / проекты, настроенные там + VSCode указан на официальном сайте Rust, поэтому я предполагаю, что он должен работа.

По сути, из двух редакторов (VSCode и Atom), которые имеют возможности отладки, в отличие от Intellij Rust, оба не работают для меня, и я просто не могу кодировать в Rust, поскольку инструменты буквально не работают / недостаточно зрелый для продуктивной работы. Пожалуйста, дайте мне знать, если я ошибаюсь, и это всего лишь один маленький флаг, который все забывают упомянуть, который отсутствует в некоторых конфигурациях.

Ответы [ 2 ]

4 голосов
/ 16 января 2020

Короткая версия

Если я правильно понимаю проблему. Затем различные проблемы сборки сводятся к тому, как вы пытаетесь построить проект и пытаетесь сделать это в разных каталогах.

TL; DR: Каталог, который вы открыли в VSCode - это каталог rust_code. Закройте его и вместо этого откройте rust_code/test_proj. Теперь Rust: cargo build (или Rust: cargo run) должен работать.


Длинная версия

Редакторы не видят никаких ящиков, поэтому вы не можете запустить свой код из редактора.

Задача Rust: cargo build не работает, потому что каталог, который вы открываете, не является "проектом Rust" (пакет Car go), это каталог, содержащий другой каталог, который является проектом Rust.

Если посмотреть на скриншот, то посмотрите, как в верхней строке написано rust_code/test_proj:

Когда вы выполняете задание, Car go жалуется на то, что rust_code/Cargo.toml не существует, что верно, поскольку он находится в rust_code/test_proj/Cargo.toml

Если вы посмотрите на вывод этого скриншота, Вы можете видеть, что это так:


Здесь вы выполняете cargo run вручную. Но важное отличие состоит в том, что вы находитесь в каталоге rust_code/test_proj.


Наконец, просто выполнить rustc main.rs не удается, так как вы не передать аргументы, необходимые. Так что rustc ничего не знает о ваших зависимостях.

Попробуйте выполнить cargo build -v, тогда вы сможете увидеть все аргументы, которые Car go передает rustc.


Автозаполнение не работает (работает только на стандартных, а не на добавляемых дополнительных ящиках).

Попробуйте открыть каталог, который содержит Cargo.toml, тогда завершение кода должно работать для зависимостей. Если нет, то я получаю следующее уведомление, и завершение кода работает только для стандартной библиотеки, как вы сказали. При этом RLS иногда бывает странным.

Если бы мне пришлось угадывать, то я думаю, что RLS компилирует код, а на каком-то этапе извлекает нужна информация Таким образом, если код не компилируется, это может повлиять на завершение кода. Но это 100% обоснованное предположение.

Кроме того, я слышал похвалу за использование IntelliJ + плагин Rust , но я сам еще не использовал его.

1 голос
/ 16 января 2020

Я понял одну часть: проблемы с запуском вашего кода из VSCode. Мне пришлось изменить команду Code-Runner по умолчанию для ржавчины:

Исходная команда:

"rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",

Изменено на:

"rust": "if [ $(basename $dir) = 'examples' ]; then cargo run --example $fileNameWithoutExt; else cargo run; fi",

И теперь это работает, и я могу быстро запустите мой код.

Часть 2: К сожалению, автозаполнение все еще очень, очень плохо. Я использую RLS. есть эта вещь racer. Это лучший выбор?

Кроме того, я слышал похвалу за использование IntelliJ + плагин Rust, но сам еще не использовал его.

Как я упомянутая в моем предыдущем посте IntelliJ, бесплатная версия не имеет отладчика из того, что я вижу. Мне это нужно.

Мне интересно, как люди получают хорошее автозаполнение от Rust?

...