Комментарии 42
хотелось бы плагин для VSCode умеющий упорядочивать import (use statement) так же легко и непренужденно как это сделано для TypeScript, JS и так далее
Или нужно что-то типа группировки и сортировки по алфавиту?
Возможно то что вы имели ввиду, как одна из опций 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.
Хабр -- для аутистов!
Когда будут туториалы "Как включить компьютер", "Как установить Виндавс"?
Если уж на то пошло, то советуйте 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.
Согласен, тянуть целую MSVC для этого (разработки на Rust) совсем не обязательно.
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, который явно поспособствовал развитию тулчейна. Во времена, когда я пытался, с этим был какой-то треш.
Да что ж всем так интересны сексуальные извращения.
Как я написал в соседней ветке, gnu toolchain был создан в винде исключительно для кросскомпиляции. 4 гигабайта диска настолько дорого стоят, чтобы тратить нервы на боль и страдания?
А также это нужно тем кто хочет использовать Rust но не имеет лицензии на MSVC.
Для проектов с открытым кодом или команд до 5 человек лицензия на MSVC не нужна, что покрывает большинство потребностей.
Спасибо за гайд, актуальная для меня тема.
Такой вопрос - Насколько сильно отличается работа в силайн от вскода и почему все же решил перейти на платное решение? Я слышал версию от знакомого раст-разработчика, что в силайне плагин полумертвый.
Также, ждём-с Fleet
Перешёл из-за того что привык пользоваться intellij-based средами.
Тоже жду fleet
Этот https://www.jetbrains.com/fleet/ аналог VSCode и Atom, только от JetBrains?
По сути да, но по идее должен быть пощнее, ибо:
Может использовать движок от идеи или других jb-сред
Архитектура изначально предполагает совместную работу и/или запуск движка или вообще всей среды где-то в облаке или на удалённой машине.
Никакого электрона
VSCode работает с WSL2, так что теоретически можно поставить раст на убунту и не тащить MSVC.
Еще бы новый файл автоматически ипортился в mod.rs при добавлении/предлагал добавить.
В pycharm кто нибудь на rast пишет? Я в pucharm rust учу. Как в нем подсветка синтаксиса норм или лучше есть?
Я бы не советовал ставить Visual Studio Build Tools на работе, если у вас нет лицензии.
По вашей же сылке скриншот:
В таком слуае, в диалоге установки надо выбрать 2 и где-то там указать x86_64-pc-windows-gnu
Спасибо за статью, все по ней настроил. Хорошая альтернатива платному СLion, можно комфортно изучать rust.
Пишем с комфортом на Rust в Visual Studio Code