Articles

jakie środowisko programistyczne najlepiej nadaje się do programowania w Rust?

Tremaine to
Tremaine to

śledź

13 maja 2019 r. · 12 min. czytaj

jakie pomysły Rust należy wybrać?

Rust jest, według Stack Overflow Insights, najbardziej „kochanym” językiem 2018 z niesamowitą oceną 78.9% — Rustaceans są wyraźnie szczęśliwi średnio. Rust nie pojawił się jednak w sekcji „najpopularniejsze technologie” tej samej ankiety, co wskazuje, że liczba użytkowników jest nadal niewielka.

nie powinno dziwić po ankiecie, że wiele osób spieszy się, aby ją wypróbować, a kiedy nadejdzie ten czas, nieuchronnie pojawia się pytanie: którego IDE należy użyć do rozwoju w Rust?

na dzień dzisiejszy nie ma wyraźnego monopolu na IDE rdzy, a co za tym idzie nie ma jednoznacznego zwycięzcy. Chociaż wydaje się, że może to być mylące, może to być dobra rzecz, ponieważ istnieje wiele wyborów, które ostatecznie sprowadzą się do preferencji użytkownika.

Ten artykuł zajmie wiele opinii internetowych i spróbuje oświecić zarówno plusy, jak i minusy.

IntelliJ IDEA z wtyczką IntelliJ Rust

Rust with IntelliJ IDEA (Credit Matklad on giphy)

link do instalacji można znaleźć tutaj na stronie IntelliJ Rust.

  • Open-source
  • napisany przez niektórych pracowników JetBrains i wolontariuszy
  • brak debugowania

edycja (5/28/19): według czytelnika Chrisa Vest:

może wykonywać debugowanie po zainstalowaniu w Clionie.

  • Free for community edition, licencja dla wersji premium
  • możliwości refaktoryzacji
  • obsługuje dodawanie nowych modułów
  • obsługuje stubowanie implementacji cech

zestaw funkcji jest niesamowity, ale uważam, że jest powolny… czy ktoś jeszcze ma ten problem? Czasami aktualizacja składni i podświetlania błędów zajmuje kilka minut po wpisaniu nowego kodu.

—/u /NeuroXc on/r/rust

użyłem obu vim z Rustem.wtyczka vim i Intellij z wtyczką Rust. Intellij ma najbardziej kompletne doświadczenie ide, które próbowałem i najlepsze ukończenia, ale nadal wolę vim.

—/u /Zethra on/r/Rust

używam Intellij z wtyczką Rust. Ja już używam JetBrains IDEs dużo do pracy uni, więc było sens trzymać się tego.

— /u/FlourineWizard on /r/rust

unikałem intellij ze względu na brak debuggera (działa tylko w clionie).

po wypróbowaniu intellij, zakończenie zadziałało od razu (po początkowym indeksie). Jednak potem zacząłem wpadać w dziwne rzeczy. Nie mam nightly nic konfiguracji, jednak to uzupełnia rzeczy w nocy. Wygląda na to, że jest zgodny z IDE, dopóki nie zostanie uruchomiony build, to nie. nie mogę dowiedzieć się, jak to się robi i jak go wyłączyć.

Intellij ma mnóstwo refaktorów, których inni nie mają. ma rzeczy, które przegapiłem w kodzie vs, w których mam prośby o funkcje.

jednak, ma inne problemy, jak to będzie losowo powiedzieć rzeczy nie skompilować, że zrobić. Będzie napisane brakująca metoda. Jeśli jednak usuniesz linię, przyjdzie ją uzupełnić, a następnie ponownie powiedzieć brakującą metodę.

no to tylko na marginesie, intellij jest zdecydowanie najcięższym IDE. Ledwo działa na moim laptopie (który jest naprawdę stary w całej sprawiedliwości, i prawdopodobnie powinienem dostać inny), gdzie inne „działają” dobrze (cokolwiek chcesz zdefiniować to dla eclipse, a kod vs był świetny, dopóki nie zrobiłem nic, aby przerwać Ukończenie).

myślę, że prawdziwą odpowiedzią jest to, że nie jesteśmy jeszcze IDE.

— /u/r3vj4m3z on /R/rust

Wtyczka IntelliJ rust jest naprawdę dobra. Przez jakiś czas używałem Vima+racer+ycm i uwielbiam Vima, ale szczególnie w dużych projektach produkcyjnych z dużą ilością modułów i głęboką hierarchią, IntelliJ jest po prostu znacznie bardziej produktywny (takie rzeczy jak zmiana nazwy pola struct działa w całej bazie kodu)

— /u/neuronsguy on /R/rust

>

IntelliJ-Rust był z pewnością niezwykle łatwy do opanowania, ale sam wzdęcie IJ mnie odstraszyło.

—/u /Cldfire on/r/rust

działa bardzo dobrze i ma aktywny rozwój.
zdecydowanie polecam, jeśli możesz oszczędzić zużycie pamięci RAM i procesora.

— chimmihc on rust-lang.org

EDIT 6/24/19: czytelnik Joseph Noose miał do dodania:

dla mnie dużym plusem IntelliJ nad VSS był let completions, że czasami przy kontaktach ze stronami trzecimi staje się szybsze i łatwiejsze zobaczyć, jaki obiekt jest zwracany. Okazało się, że z niektórymi rzeczami Diesla było to szczególnie przydatne, ponieważ obiekty są dość długie

CLion z wtyczką IntelliJ Rust

kolejna opcja z JetBrains, CLion to IDE C / C++, które może również obsługiwać wtyczkę IntelliJ Rust.

  • umożliwia korzystanie z Systemu Budowania ładunku
  • wsparcie dla debugowania aplikacji Rust — w przeciwieństwie do IntelliJ IDEA
  • wymaga licencji komercyjnej (lub bezpłatnej z .Edu e-mail address)

Clion z wtyczką Rusta dla intelliJ jest prawdopodobnie tak samo podobny do istniejącego IDE specyficznego dla Rusta; jednak projekt Eclipse może go stworzyć, jest to obecnie dyskutowane.

—/u /steveklabnik1 on/r/rust

obsługa debugowania w Clionie jest doskonała! Za mało pochwał. Wbudowane wartości uruchomieniowe w kodzie w punktach przerwania są miłe (1), podobnie jak Inspektor debugowania (2), a ustawianie warunkowych punktów przerwania… jest bardzo wygodne.
Zobacz: 1 2 3

— /u/Monadic_Malic_Acid on /r/rust

VSCode with Rust plugin

VSCode with Rust (credit rust-lang.org)
  • Open-source (bezpłatny)
  • Wbudowana obsługa ładunku
  • uzupełnianie kodu
  • Skocz do definicji, definicji peek, Znajdź wszystkie odniesienia, wyszukiwanie symboli
  • typy i dokumentacja po najechaniu kursorem
  • formatowanie kodu
  • Refaktoryzacja (zmiana nazwy, deglob)
  • błędy i zastosowanie sugestii z błędów
  • fragmenty
  • tworzenie zadań
  • powered by the rust Language Server (RLS)
  • Format przy zapisie, w razie potrzeby

VSCode ma dobrą obsługę serwera językowego, co oznacza, że nowe funkcje RLS działają w nim bardzo dobrze. Jest to bardziej tradycyjne doświadczenie IDE, ale wolę używać sesji tmux jako mojego IDE z Vimem jako edytorem kodu.

—/u /IDidntChooseUsername on/r/rust

+1 dla VSCode + rozszerzenie. Dlaczego? Niektórzy ludzie chcą patrzeć, jak świat płonie. Ale poważnie. VSCode to naprawdę dobry edytor.

używam go dla C, C++, C#, Javascript, Erlang, Prolog, Lisp, f#, a teraz Rust.

No Emacs pinky.

działa od razu po wyjęciu z pudełka.

komend pallete jest również dość baller.

niedawno wymienili swój system grep na wersję rust i uzyskali ogromny wzrost wydajności. Jestem tu dosłownie z powodu uwag o wydaniu VSCode z około tygodnia lub 2 temu.

solidna integracja z Git.

Cross platform.

czy już wspomniałem, że lubię patrzeć jak świat płonie?

— on/R/Rust

używam kodu VS z rozszerzeniem rust dla wszystkich moich kodowań rust. Do tej pory służyło mi to bardzo dobrze, wszystko, czego nie mogę zrobić z kombinacjami klawiszy dostarczonymi przez rozszerzenie, można zrobić za pomocą zintegrowanej konsoli, więc naprawdę nie mam żadnych skarg.

— /u/YourGamerMom on /R/Rust

polecam VSCode, wtyczka Rusta zapewnia autouzupełnianie, podświetlanie składni i kilka innych fajnych funkcji. Ale przede wszystkim istnieje Ładna wtyczka LLDB, która umożliwia wizualne debugowanie, co jest zaletą w porównaniu z innymi Idami, które próbowałem.

i to jest cross platform.

— mczarnek on rust-lang.org

Po spędzeniu 3+ tygodni przy użyciu intellij-Rust, vscode-rust i różnych różnych wtyczek do obsługi Rusta w Sublime Text 3, mogę śmiało powiedzieć, że najlepsze doświadczenie, jakie miałem do tej pory, było z wtyczką(s) vscode … Vscode uderza w idealny obszar dla mnie; od razu było zacząć działać (ponieważ miałem już niezbędne narzędzia Cargo install ’ D i komponent Rust src dodany przez rustup, wszystko działało po wyjęciu z pudełka) i nadal utrzymuje doświadczenie edytora. Jedyną rzeczą, której nie udało mi się uruchomić, jest nakładka LLDB, ale wynika to z mojego korzystania z WSL, a nie z winy samej wtyczki.

TL: DR, polecam vscode.

—/u /Cldfire on/r/rust

(Neo)vim z wtyczkami Rusta (jak rust.vim, vim.racer)

przykład Rusta z Vimem (credit jovansonlee Cesar na GitHubie)

naprawdę używany do Vima i nie może oderwać się od różnych poleceń manipulacji tekstem? Nie bój się-wiele osób używa Vima podczas tworzenia w Rust.

możesz iść z prostą instalacją Vima waniliowego lub możesz użyć innych smaków, takich jak Neovim.

Neovim

  • Open-source
  • community-driven
  • dostęp do wykonywania zadań/zadań asynchronicznie w Vimie (H/T Dhruva Sagar na StackOverflow)

niezależnie od tego, jakiego Vima używasz, możesz korzystać z wtyczek specyficznych dla Rusta.

rdza.vim

  • wykrywanie plików rdzy
  • podświetlanie składni
  • formatowanie
  • integracja składniowa
  • wymaga Vima 8 lub wyższego dla pełnej funkcjonalności

vim.racer

  • pozwala Vimowi używać Racer do uzupełniania kodu Rust i nawigacji

Vim, a to trochę bolesne tbh. Jestem otwarty na sugestie. Strona manipulacji tekstem Vima jest niesamowita. To po prostu oszałamiające. Ale reszta Vima jest dość sh*t, a przy rodzajach złożonych błędów, które dostajesz w Rust, dość bolesne jest przełączanie się na terminal.

chcę przełączyć się na VSCode lub podobny, ale brak poleceń edycji Vima jest naprawdę poważny.

—/u /jl2352 on/r/rust

z wystarczającą ilością wtyczek (takich jak serwery językowe itp.) możesz sprawić, że reszta (neo)Vima będzie naprawdę użyteczna, imo.

—/u /ashfordneil on/r/rust

użyłem obu vim z Rustem.wtyczka vim i Intellij z wtyczką Rust. Intellij ma najbardziej kompletne doświadczenie ide, które próbowałem i najlepsze ukończenia, ale nadal wolę vim. Polecam wypróbowanie konfiguracji wymienionych na https://areweideyet.com/ I sprawdzenie, co działa najlepiej dla ciebie.

—/u /Zethra on/r/rust

Co ciekawe, niektórzy puryści w ogóle nie używają wtyczek Rusta!

Vim z wbudowanym Auto complete (+ autocomplpop). Zbieg. To w zasadzie to … koniec z fantazyjnymi wtyczkami! I tak, pracuję na dużych bazach kodowych z tą konfiguracją!

— /u/musicmatze on /r/rust

Emacs

Emacs-racer by Racer-Rust (Credit Recordnotfound)

, powinieneś przynajmniej wspomnieć o Emacsie.

Dodaj do tego, że istnieje projekt portu Emacsa do Rusta. Używam go jako zamiennika Emacsa na moich maszynach z Linuksem.

Uwaga: Właściwie nie używam Emacsa do żadnego ciężkiego rozwoju rdzy. Przechodzę przez moją przygodę z nauką rdzy, korzystając z idei IntelliJ.

— Chris Woods w komentarzach do tego wpisu

  • z Racer oferuje uzupełnianie kodu
  • ma obsługę Cargo (menedżera pakietów) z kombinacjami klawiszy
  • ma konfigurację rust-lang do programowania specyficznego dla Rusta w Emacsie
  • obsługuje rustfmt z rust-lang
  • za darmo

powinieneś użyć melpa i use-package aby zainstalować pakiety w Emacsie.

Konfigurowanie Rusta do używania RLS na Emacsie jest trochę trudne dla początkujących. Oto moja konfiguracja RLS, jeśli jesteś zainteresowany: https://github.com/CSRaghunandan/.emacs.d/blob/master/setup-files/setup-lsp.el I https://github.com/CSRaghunandan/.emacs.d/blob/master/setup-files/setup-rust.el

— /u/CSRaghunandan on /r/rust

mówię to jako ktoś jeszcze uczący się Rusta, a nie jako rekomendacja dla ludzi, którzy wnoszą realny wkład w kod produkcyjny.

używam Emacsa w trybie Rust bez innych dodatków.

Jeśli Mój kod jest na tyle skomplikowany, że potrzebuję IDE, aby go śledzić, jest na tyle skomplikowany, że ktoś inny nie będzie w stanie go śledzić za pomocą tej pomocy. A jeśli potrzebuję autouzupełniania, aby wiedzieć, jaką funkcję chcę wywołać i jej sygnaturę typu, to prawdopodobnie nie mam żadnego biznesu, wywołującego ją bez podania dokumentów przynajmniej raz, więc nie ma dodatkowych problemów, aby po prostu ją sprawdzić.

— /u/bxtk on /r/rust

Sublime with Rust Enhanced

Sublime with rust Enhanced (credit Rust-lang via packagecontrol.io)
  • Open-source (free)
  • Goto anything
  • Goto definition
  • Split editing
  • Low profile

działa całkiem dobrze, ale może być nieco więcej przyjazny dla użytkownika. Jest to jednak bardziej wysublimowany problem niż problem z wtyczką.

—/u /booooomba on/r/Rust

próbowałem, ale brakowało mi narzędzi do refaktoryzacji, dobrego zintegrowanego terminala i wpisz po najechaniu kursorem w porównaniu do wtyczki VSCode + Rust.

—/u /Foo-jin on/r/rust

tylko irytujące jest to, że nie bierze pod uwagę testów, a zatem nie wyłapuje w nich błędów kompilacji i wypluwa wiele ostrzeżeń o nieużywanych funkcjach. (Pisanie testów najpierw dla mojego lib)

— /u/Rawler82 on /R/rust

nie ma najlepszych funkcji, ale jest szybki i mały (mało pamięci RAM i miejsca na dysku).

—/u /razrfalcon on/r/rust

sytuacja wtyczki Sublime Text 3 jest, przynajmniej dla mnie, dość nieprzyjemna; chociaż byłem w stanie uzyskać rzeczy głównie działające na macOS, nigdy nie byłem w stanie uzyskać działającego autouzupełniania na Windows 10 (oprócz dość długiego i bolesny czas instalacji).

—/u /Cldfire on/r/rust

niektórzy ludzie nie używają żadnych dodatkowych wtyczek z Rust Enhanced.

do wszystkiego używam wysublimowanego tekstu. Jeśli chodzi o budowanie, po prostu trzymam otwarte okno terminala w dolnej części mojego ekranu z cargo watch uruchomiony.

nie mam żadnych wtyczek specyficznych dla Rusta, ale biorąc pod uwagę wszystkie zalecenia tutaj, myślę, że wypróbuję wtyczkę Rust Enhanced później.

— /u/Uncaffeinated on /r/rust

Atom with Rust packages

Atom with IDE-Rust (credit atom.io)

IDE-Rust

  • uto-completion
  • Diagnostics (errors and warnings from rustc and clippy, see clippy_preference setting)
  • Document outline
  • Go to definition (ctrl or cmd click)
  • Type information and Documentation on hover (hold ctrl or cmd for more information)
  • Find references (ctrl-alt-shift-f or cmd-opt-shift-f also in context menu)
  • sformatuj Plik z rustfmt (ctrl-shift-c lub cmd-shift-c również w menu kontekstowym)
  • Format podczas zapisywania (domyślnie wyłączony, patrz atom-ide-ui ustawienia)

język-Rust

  • dodaje podświetlanie składni i fragmenty do plików Rust w ATOM

Linter-Rust

  • linterowanie plików Rust W Atom przy użyciu plików rustc i cargo
  • będzie sprawdzane po ich otwarciu lub zapisaniu

токамак (Tokamak)

  • podświetlanie składni
  • tworzenie projektu cargo
  • wsparcie dla ładunku projekty
  • uzupełnianie kodu za pomocą Racer
  • zarządzanie łańcuchami narzędzi Rust
  • Linting kodu
  • konfiguracja specyficzna dla projektu
  • formatowanie kodu
  • przejdź do definicji
  • najedź kursorem na dokumentację
  • Znajdź referencje
  • zarys pliku i projektu
  • Autouzupełnianie po wyjęciu z pudełka
  • podświetlanie kodu

Racer

  • zapewnienie inteligentnego uzupełniania kodu i „znajdź definicję”

używam language-Rust, Linter-Rust, Racer (autocomplete) i Atom-beautify na instalacji rustup. Ustawianie ścieżek zajęło trochę czasu, ale działa całkiem dobrze. Próbowałem też przełączyć się na Tokamak jakiś czas temu, ale to mi nie zadziałało.

uruchamiam mój kod Rusta w oddzielnym oknie zsh, które jest oklejone z boku jakimś dodatkiem do Gnome i zawsze widoczne (nie czuję się gotowy na i3). Z drzewem plików, widokiem kodu, minimapą i oknem terminala są w sumie cztery kolumny i czasami wydaje się trochę ciasno. Kiedy nie mam dużego monitora podłączonego do laptopa, uruchamiam atom na pełnym ekranie.

— rosievery NA rust-lang.org

używałem Atom dla Rusta przez około 9 miesięcy, wcześniej używałem Atom dla wszystkich moich programistów Pythona. Zrobiłem to samo, co @ roSievers powyżej, ale znalazłem powtarzające się problemy na macOS (zwłaszcza ze zmiennymi środowiskowymi nie są przekazywane bez zamieszania). Nigdy nie udało mi się prawidłowo uruchomić tokamaka.

— pwrdwnsys on rust-lang.org

szczerze mówiąc nie sądzę, aby sublime porównywał się do funkcjonalności, jaką jest atom dla Rusta.

szybkość uruchamiania jest powolna, ale wszystko inne jest całkowicie dopuszczalne.

a ja wolęlinter Ilinter-rust pakiety, ponieważ pokażą ci kompilację błędów i ostrzeżeń inline ½ sek po naciśnięciu ctrl+S!

— /u/flying-sheep on /r/rust

Eclipse Corrosion (Eclipse IDE for Rust Developers)

Eclipse IDE dla programistów Rust (credit Corrosion na GitHub)
  • pomocna, jeśli jesteś już przyzwyczajony do Eclipse
  • integracja z serwerem języka Rust i cargo
  • wspomaganie kompletacji
  • documentation Hover
  • diagnostyka
  • formatowanie
  • Widok zmiennych
  • konsola GDB
  • punkty przerwania
  • Wykonywanie wyrażeń
  • Kreator nowego projektu
  • zarządzanie łańcuchem narzędzi
  • obsługa edycji plików TOML
  • Kreator eksportu Skrzynki
  • Preferencje serwera języka Rust
  • zarys projektu
  • ciemny motyw
  • Widok problemów
  • integracja z Git (dostępne tylko w pakiecie antykorozyjnym)
  • open-source (free)

posiada również integrację export jako crate, execution and debug support (over gdb) ; nie są one dostarczane przez RLS, ale przez bezpośrednią integrację z cargo i Rust— gdb

– /u/mickael_istria on /r/Rust