Как стать автором
Обновить

Комментарии 42

хотелось бы плагин для VSCode умеющий упорядочивать import (use statement) так же легко и непренужденно как это сделано для TypeScript, JS и так далее

В rust-analyzer есть функция для объединения импортов и удаления лишних.
Или нужно что-то типа группировки и сортировки по алфавиту?

Возможно то что вы имели ввиду, как одна из опций rustfmt для файлов исходников: Reorder import and extern crate statements alphabetically in groups (a group is separated by a newline).

Что касается форматирования файлов .toml то указаный в статье Even Better Toml это тоже может.

Попробовал недавно Rust, теперь интересно: как на нем действительно можно писать с комфортом? Куча кода просто генерируется через derive, этот сгенерированный код не подцепляется к анализу и автодополнению ни в плагине к VSCode, ни в плагине к IntelliJ.

Похоже на баг.
У меня нормально подсвечивается всё что приходит из дерайвов и макросов. (и с rust-analyzer и с Intellij-Rust)

И даже https://github.com/diesel-rs/diesel подсвечивается? Ничего себе!

А можете, пожалуйста, показать?

Было тяжело, но я завёл дизель.
Правда не полностью — всё ещё хз как победить use of undeclared crate or module при derive(Insertable)

Итог:
в vscode есть подсветка дизелевского DSL-а для описания таблиц (который table!).
Вероятно, это заслуга rust-analyzer.

И в vscode и в intellij работает авто-импорт и автокомплит всего что там макросы нагенерили.

Основные случаи (derive из std и serde) плагины давно умеют обрабатывать специально и просто понимают что трейт как-то реализуется. Для более сложных случаев есть возможность экспериментально раскрывать proc-macro, но это работает не всегда и не совсем стабильно.

Для того чтобы просто запустить - нажимай Run.

Для того чтобы запустить в режиме отладки - жми Debug.

Также можно создать launch.json через раздел Run and Debug (четвёртая иконка на боковой панели на скриншоте).

Хех. Вот как раз на этом у меня и был затык (не работает отладка, и с launch.json я так и не разобрался в принципе). А всё остальное, что описано - прекрасно очевидно из советов rustup-init и подсказок самого VS Code, когда впервые открываешь rust-проект.

А как именно не работала отладка?
У меня аналогичные проблемы были с официальным Rust-екстеншеном, а на r-a наоборот всё из коробки отлично работает.
И launch.json и линза около main.

Просто берет и не работает. Отладчик нашелся, приложение запускается, но в обычном режиме выполнения. Глубже разбираться лень, он особо не нужен, да и от VS Code я в принципе ухожу уже.

Магия, что тут сказать)

У меня такое тоже было и решалось только полной чисткой всего и вся

НЛО прилетело и опубликовало эту надпись здесь

breakpoint

Хабр -- для аутистов!

Когда будут туториалы "Как включить компьютер", "Как установить Виндавс"?

Если уж на то пошло, то советуйте Even Better TOML вместо Better TOML, который заброшен и не поддерживается уж 4 года как.

Для подсветки синтаксиса и автодополнений есть два наиболее популярных расширения: Rust и rust-analyzer. Они работают немного по-разному и конфликтуют между собой. Я не буду глубоко разбирать, в чём у них различия, но rust-analyzer работает лучше, по тому берём его.

Различия у них в том, что vscode-rust больше года назад забросили, а позже вообще объявили deprecated в RFC2912. Оно не "плохо работает", оно вообще больше не разрабатывается. rust-analyzer ожидается в stable toolchain вместо RLS.

А чтобы добавить ещё больше комфорта и удалить MSVC build tools который весит 4.2 Gb рекомендую установить Rust через MSYS2.

А также это нужно тем кто хочет использовать Rust но не имеет лицензии на MSVC.

Если я не ошибаюсь, если компилировать с msys, то тому кто захочет твоим приложением воспользоваться — придётся тоже ставить msys.

PS: у меня он почему-то весит 5.2гб, вместо 4.2

тому кто захочет твоим приложением воспользоваться — придётся тоже ставить

Cygwin

у меня он почему-то весит 5.2гб, вместо 4.4.2

Удалите не используемое.

Cygwin

Немного не шарю. Если собирать с cygwin, то не потребителю не придётся его устанавливать? Не будет никаких зависимостей от всяких posix штук?

Если будет возможность слинковать статически, то не придётся. Например, HelloWorld слинковать можно.

Но в серьёзных проектах такого почти не встретится, потому что GNU ABI предполагает динамическую линковку по умолчанию. Множество либ вообще не предназначено для статики. Натрахаетесь со всякими PIC, релоками, и прочими радостями линковки.

Это всё -- если у вас нет рантайм ABI-bound взаимодействия, иначе -- много разнообразного секса будет.

Двачую. Совершенно непонятно, почему на винде руступ предлагает по умолчанию msvc, а не mingw, который легкий и уже в комплекте.

Мб потому что в Винде используется Windows ABI, а не GNU'сный?

Как вы предлагаете линковать либы, например, из современной SDK/WDK? Я вообще не уверен, что gnu бандл содержит адекватные хотя бы основные либы для виндовых фич. Последний раз, когда сталкивался пару лет назад, там было говно мамонта времён раннего pre SP3 Windows XP.

Если вам достаточно gnu тулчейна, значит вы HelloWorld'ы компилите без внешних платформенных зависимостей. Ну или сраные блокчейны с бекендами, перекладывающими байтики, тоже вполне соберутся. А что-то полезное под современную 10/11 винду типа драйверов или системных утилит им никак не слинкуешь.

gnu тулчейн под винду изначально создавался для кросс-компиляции, а не извращений.

У меня есть большой проект на winapi. Есть проект поменьше на графику. Есть россыпь мелких проектов-библиотек. Ни в одном из них проблем с mingw нет. Возможно они появятся, если использовать непростые зависимости родных windows-библиотек. Но для этого нужно прям закапываться - Windows SDK собирается с mingw без видимых проблем. Требовать же целый msvc по умолчанию ради потенциальных "драйверов", когда вокруг 99% проектов - прикладные библиотеки, немного оверкилл.

Возможно, современная ситуация получше, но когда пару лет назад сталкивался, из своих проектов максимум 10% мог собрать gnu тулчейном без бубна.

ПС. Сейчас погуглил. Похоже, что ситуация заметно лучше стала с появлением WLS, который явно поспособствовал развитию тулчейна. Во времена, когда я пытался, с этим был какой-то треш.

Сейчас встроенного mingw хватает за глаза для любых прикладных задач. У меня только scintilla потребовала какую-то фичу, для которой пришлось ставить mingw с офсайта.

Да что ж всем так интересны сексуальные извращения.

Как я написал в соседней ветке, gnu toolchain был создан в винде исключительно для кросскомпиляции. 4 гигабайта диска настолько дорого стоят, чтобы тратить нервы на боль и страдания?

А также это нужно тем кто хочет использовать Rust но не имеет лицензии на MSVC.

Для проектов с открытым кодом или команд до 5 человек лицензия на MSVC не нужна, что покрывает большинство потребностей.

Нет, 4Gb стоят мало если только не в виртуалке, но основная причина, конечно, лицензия.

Спасибо за гайд, актуальная для меня тема.

Такой вопрос - Насколько сильно отличается работа в силайн от вскода и почему все же решил перейти на платное решение? Я слышал версию от знакомого раст-разработчика, что в силайне плагин полумертвый.

Также, ждём-с Fleet

Не знаю, на сколько он полумёртвый. Обновления периодически выходят.
Перешёл из-за того что привык пользоваться intellij-based средами.

Тоже жду fleet

По сути да, но по идее должен быть пощнее, ибо:

  1. Может использовать движок от идеи или других jb-сред

  2. Архитектура изначально предполагает совместную работу и/или запуск движка или вообще всей среды где-то в облаке или на удалённой машине.

  3. Никакого электрона

Ещё заметил, что Fleet базируется на LSP и в этом отношении больше похож на Emacs с lsp-mode.

VSCode работает с WSL2, так что теоретически можно поставить раст на убунту и не тащить MSVC.

Да, можно. На это даже намекает один из вариантов ответа в опросе)
Разница будет только на этапе установки тулчейна.

Ну просто был тред в комментариях, где люди ругались на размер MSVC)
UPD: А опрос не увидел, май фолт)

Еще бы новый файл автоматически ипортился в mod.rs при добавлении/предлагал добавить.

В pycharm кто нибудь на rast пишет? Я в pucharm rust учу. Как в нем подсветка синтаксиса норм или лучше есть?

PyCharm использует Intellij-Rust, так что ничем от Intellij Community + Intellij-rust отличаться не должно)

Я бы не советовал ставить Visual Studio Build Tools на работе, если у вас нет лицензии.

По вашей же сылке скриншот:

В таком слуае, в диалоге установки надо выбрать 2 и где-то там указать x86_64-pc-windows-gnu

Спасибо за статью, все по ней настроил. Хорошая альтернатива платному СLion, можно комфортно изучать rust.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории