Articles

Vad är det bästa IDE för att utveckla i Rust?

Tremaine eto
Tremaine Eto

följ

13 maj, 2019 · 12 min läs

vilka rustideer ska du välja?

Rust är, enligt Stack Overflow Insights, det mest ”älskade” språket i 2018 med en otrolig 78.9% betyg — Rustaceans där ute är tydligt glada i genomsnitt. Rust dök dock inte upp i samma undersöknings avsnitt ”mest populära tekniker”, vilket indikerar att mängden totala användare fortfarande är ganska liten.

det borde inte komma som någon överraskning efter undersökningen då att många människor rusar för att prova det, och när den tiden kommer uppstår frågan oundvikligen: vilken IDE ska du använda för att utvecklas i Rust?

från och med idag finns det inget tydligt monopol på Rust IDEs och därmed ingen tydlig vinnare. Så mycket som det känns som det kan göra det förvirrande, kan det faktiskt vara bra eftersom det finns en mängd olika val som i slutändan kommer att koka ner till användarens preferens.

den här artikeln kommer att ta många internetutlåtanden och försöka belysa både för-och nackdelar.

IntelliJ IDEA med IntelliJ Rust plugin

rost med IntelliJ IDEA (Credit matklad på giphy)

du hittar installationslänken här på IntelliJ Rust-webbplatsen.

  • öppen källkod
  • skriven av några JetBrains anställda och volontärer
  • ingen felsökning

redigera (5/28/19): enligt läsaren Chris Vest:

det kan göra felsökning när den installeras i CLion.

  • gratis för community edition, licens för premiumversion
  • Refactoring capabilities
  • stöder tillägg av nya moduler
  • stöder stubbing ut egenskaper implementeringar

funktionsuppsättningen är fantastisk, men jag tycker att det är långsamt… gör någon annan har det här problemet? Det tar ibland några minuter för syntax och felmarkering att uppdatera efter att jag har skrivit någon ny kod.

— /u/NeuroXc på /r/rost

Jag har använt både vim med rost.vim plugin och Intellij med det är Rust plugin. Intellij har den mest kompletta ide-upplevelsen jag har provat och de bästa kompletteringarna men jag föredrar fortfarande vim.

— /u/Zethra på /r/rust

Jag använder Intellij med Rust plugin. Jag använder redan Jetbrains IDEs mycket för uni-arbete, så det var vettigt att hålla fast vid det.

— /u/Flourinwizard on /r/rust

Jag hade undvikit intellij på grund av bristen på debugger (fungerar bara i clion).

När du testade intellij fungerade slutförandet ganska bra omedelbart (efter det ursprungliga indexet). Men sedan började jag springa in i udda saker. Jag har inte nattliga något setup, men det avslutar saker i nattliga. Det ser ut som det överensstämmer i IDE, tills en byggnad körs, så gör det inte. jag kan inte räkna ut hur det får dem eller hur man inaktiverar det.

Intellij har massor av refactors andra inte. det har saker jag saknade i vs-kod som jag har funktionsförfrågningar för.

men det har andra problem som att det slumpmässigt säger att saker inte kompilerar det som gör. Det kommer att säga saknad metod. Men om du tar bort raden kommer den att slutföra den och säg igen saknad metod.

sedan bara en sidoanteckning, intellij är den överlägset mest tunga IDE. Det går knappt på min bärbara dator (vilket är riktigt gammalt i all rättvisa, och jag borde nog få en annan), där de andra ”fungerar” bra (vad du än vill definiera det för eclipse, och vs code var bra tills jag gjorde vad som helst för att bryta slutförandet).

Jag tror att det verkliga svaret är att vi inte är IDE ännu.

— /u/r3vj4m3z på /R/rost

IntelliJ rust plugin är riktigt bra. Jag använde vim + racer+ycm ett tag, och jag älskar Vim, men speciellt för stora produktionsprojekt med massor av moduler och djupa hierarkier är IntelliJ bara mycket mer produktiv (saker som rename struct field fungerar över hela kodbasen)

— /u/neuronsguy on /r/rust

IntelliJ-Rust var verkligen extremt lätt att komma igång med, men uppblåsningen av IJ själv körde mig bort.

— /u/Cldfire on /r/rust

det fungerar mycket bra och har aktiv utveckling.
Jag rekommenderar definitivt det om du kan spara RAM och CPU-användning.

— chimmihc på rust-lang.org

redigera 6/24/19: läsaren Joseph Noose hade följande att lägga till:

för mig var det stora pluset av IntelliJ över VSS let-kompletteringarna, att ibland när man handlar med 3: e parter blir det snabbare och lättare att se vilket objekt som returneras. Jag hittade med några av diesel Grejer det var särskilt användbart eftersom objekten är ganska långa

CLion med IntelliJ Rust plugin

ett annat alternativ med JetBrains, CLion är en C / C++ IDE som också kan stödja IntelliJ Rust plugin.

  • tillåter användning av Last byggsystem
  • stöd för felsökning rost applikationer — till skillnad från IntelliJ IDEA
  • kräver kommersiell licens (eller fri med .edu e-postadress)

Clion med Rust-plugin för intelliJ är förmodligen så nära en Rust-specifik IDE som finns; Eclipse-projektet kan dock göra en, det diskuteras för närvarande.

—- /u / steveklabnik1 på / R / rost

Felsökningsstöd i CLion är utmärkt! Får inte tillräckligt med beröm. Inlined runtime värden i kod vid brytpunkter är trevligt (1), Så är debugging inspector (2), och inställning villkorliga brytpunkter… mycket bekväm att göra.
se: 1 2 3

— /u/Monadic_Malic_Acid on /r/rust

VSCode with Rust plugin

VSCode with Rust (credit rust-lang.org)
  • öppen källkod (gratis)
  • inbyggt laststöd
  • kodkomplettering
  • Hoppa till definition, peek definition, hitta alla referenser, symbolsökning
  • typer och dokumentation på hover
  • kodformatering
  • Refactoring (Byt namn, deglob)
  • li>

  • fel squiggles och tillämpa förslag från fel
  • snippets
  • bygg uppgifter
  • drivs av Rust language server (RLS)
  • format på Spara, om så önskas

vscode har bra språkserverstöd, vilket innebär att det är möjligt att nya RLS-funktioner fungerar mycket bra i den. Det är mer en traditionell IDE-upplevelse, men jag föredrar att använda en tmux-session som min IDE med vim som min kodredigerare.

— /u/IDidntChooseUsername på /R/rost

+1 för Vscode + förlängning. Varför? Vissa människor vill bara se världen brinna. Men allvarligt. VSCode är en riktigt, riktigt bra redaktör.

Jag använder den för C, C++, C#, Javascript, Erlang, Prolog, Lisp, F# och nu Rust.

ingen emacs pinky.

fungerar bara direkt ur lådan.

kommando pallete är också ganska baller.

de ersatte sitt grep-system med rust-versionen nyligen och fick massiv prestandaökning. Jag är bokstavligen här på grund av vscode release notes från ungefär en vecka eller 2 sedan.

Solid Git integration.

plattformsoberoende.

nämnde jag redan att jag gillar att se världen brinna?

— on /r/rust

Jag använder VS-kod med rust-förlängningen för all min rostkodning. Det har tjänat mig väldigt bra hittills, allt som jag inte kan göra med tangentkombinationerna som tillhandahålls av förlängningen kan göras med den integrerade konsolen, så jag har verkligen inga klagomål.

— /u/YourGamerMom on /R/rust

Jag skulle rekommendera VSCode, Rust-plugin ger autofullständig, syntaxmarkering och några andra trevliga funktioner. Men framför allt finns det ett trevligt LLDB-plugin som tillåter visuell felsökning vilket är en fördel jämfört med andra IDEs jag har provat.

och det är plattformsoberoende.

— mczarnek on rust-lang.org

Efter att ha spenderat 3+ veckor vardera med intellij-rust, vscode-rust och olika olika plugins för rust support i Sublime Text 3, Kan jag med säkerhet säga att den bästa upplevelsen jag har haft fram till denna punkt var med vscode plugin(s) … Vscode slår det perfekta området för mig; det var omedelbart att komma igång med (eftersom jag redan hade de nödvändiga verktygen, allt fungerade ur lådan) och upprätthåller fortfarande redaktörens upplevelse. Det enda jag inte har kunnat få arbeta är LLDB frontend, men det beror på min användning av WSL, inte felet i plugin själv.

TL: DR, jag rekommenderar vscode.

— /u/Cldfire på /r/rost

(Neo)vim med rost plugins (som rost.vim, vim.

exempel på rost med vim (credit jovansonlee Cesar på GitHub)

används verkligen för att vim och kan inte avvika från sina olika textmanipulationskommandon? Var inte rädd-många använder vim när de utvecklas i Rust.

Du kan gå med en vanlig vanilj vim installation, eller så kan du använda andra smaker som Neovim.

Neovim

  • öppen källkod
  • Community-driven
  • åtkomst till att utföra jobb/uppgifter asynkront i Vim (h/t Dhruva Sagar på StackOverflow)

oavsett smak av Vim du använder kan du utnyttja Rostspecifika plugin-program.

rost.vim

  • rostfildetektering
  • syntaxmarkering
  • formatering
  • Syntastisk integration
  • kräver Vim 8 eller högre för full funktionalitet

vim.racer

  • tillåter vim att använda Racer för Rostkodkomplettering och navigering

Vim, och det är ganska smärtsamt tbh. Jag är öppen för förslag. Textmanipulationssidan av Vim är otrolig. Det är bara mind blowing. Men resten av Vim är ganska sh*t, och med de typer av komplexa fel du får i Rust är det ganska smärtsamt att byta till terminalen.

Jag vill byta till VSCode eller liknande, men bristen på vim-redigeringskommandon är verkligen stark.

— /u/jl2352 på /R/rust

med tillräckligt med plugins (saker som språkservrar, etc) kan du göra resten av (neo)vim verkligen användbar, imo.

— /u/ashfordneil på /R/rost

Jag har använt både vim med rost.vim plugin och Intellij med det är Rust plugin. Intellij har den mest kompletta ide-upplevelsen jag har provat och de bästa kompletteringarna men jag föredrar fortfarande vim. Jag skulle rekommendera att prova de inställningar som nämns på https://areweideyet.com/ och se vad som fungerar bäst för dig.

— /u/Zethra on /r/rust

intressant nog använder vissa purister inte Rust-plugins alls!

Vim med inbyggd automatisk komplettering (+ autocomplpop). Flyktig. Det är i princip det … inga fler snygga plugins! Och ja, jag arbetar på stora kodbaser med denna inställning!

— /u/musicmatze på /r/rost

Emacs

emacs-Racer av racer-Rust (kredit recordnotfound)

jag känner mig som om du ska inkludera vi(m), bör du förmodligen åtminstone ge emacs ett omnämnande.

Lägg till det att det finns ett projekt för att port emacs till rust. Jag använder den som en drop-in ersättning för emacs på mina linux-maskiner.

notera: Jag använder faktiskt inte emacs för någon tung rostutveckling. Jag går igenom Min rostinlärningsresa med IntelliJ IDEA.

— Chris Woods i det här inläggets kommentarer

  • Med Racer, erbjuder kodkomplettering
  • Har Last (pakethanterare) stöd med tangentkombinationer
  • har rust-lang-konfiguration för Rust-specifik programmering i Emacs
  • stöder rustfmt med rust-lang
  • gratis

Du bör använda Melpa och use-package för att installera paket i Emacs.

att konfigurera Rust för att använda RLS på emacs är lite knepigt för en nybörjare. Här är min RLS— konfiguration om du är intresserad: https://github.com/CSRaghunandan/.emacs.d/blob/master/setup-files/setup-lsp.el och https://github.com/CSRaghunandan/.emacs.d/blob/master/setup-files/setup-rust.el

– /u/CSRaghunandan on /r/rust

Jag säger detta som någon som fortfarande lär sig rost, och inte som en rekommendation för personer som gör verkliga bidrag till produktionskoden.

Jag använder Emacs i Rostläge utan andra krusiduller.

Om min kod är komplicerad nog att jag behöver en IDE för att följa den, är det komplicerat nog att någon annan inte kommer att kunna följa den med det stödet. Och om jag behöver autofullständig för att veta vilken funktion jag vill ringa och dess typsignatur så har jag förmodligen inget företag som ringer det utan att ge dokumenten åtminstone en gång i alla fall, så det är inget extra problem att bara slå upp det.

— /u/bxtk på /R/rost

sublim med Rostförbättrad

Sublime med rost förbättrad (kredit Rust-lang via packagecontrol.io)
  • öppen källkod (gratis)
  • gå till något
  • gå till definition
  • Split redigering
  • låg profil

det fungerar ganska bra, men det kan vara lite mer användarvänlig. Detta är dock mer ett sublimt problem än ett plugin-problem.

— /u/booooomba på /r/rust

Jag försökte det, men jag missade refactoring verktyg, en bra integrerad terminal, och typ på hover jämfört med VSCode + Rust plugin.

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

endast irritation är att det inte anser tester, och därför inte fånga kompilera fel i dem, och spyr en hel del varningar om oanvända funktioner. (Skrivtest först för min lib)

— /u/Rawler82 på /R/rust

det har inte de bästa funktionerna, men det är snabbt och litet (lågt på RAM och diskutrymme).

— /u/razrfalcon on /r/rust

Sublime Text 3: s plugin-situation är åtminstone för mig ganska wonky; medan jag kunde få saker att fungera mest på macOS, kunde jag aldrig få arbeta autofullständig på Windows 10 (förutom den ganska långa och smärtsamma inställningen tid).

— /u/Cldfire on /r/rust

vissa människor använder inga ytterligare plug-ins med Rust förbättrad.

Jag använder sublim Text för allt. När det gäller byggnaden går jag bara ett terminalfönster Öppet längst ner på min skärm med cargo watch igång.

Jag har inga Rust – specifika plugins, men med tanke på alla rekommendationer här tror jag att jag ska prova Rust Enhanced plugin senare.

— /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 med rustfmt (ctrl-shift-cellercmd-shift-c även i snabbmenyn)
  • Format på Spara (inaktiverat som standard, seatom-ide-uiinställningar)

språk-rust

  • lägger till syntaxmarkering och utdrag till Rust-filer i atom

Linter-Rust

  • linting dina Rust-filer i atom, med hjälp av rustc och cargo
  • filer kommer att kontrolleras när du öppnar eller sparar dem

Portugals (tokamak)

  • syntaxmarkering
  • skapa Cargo Project
  • stöd för cargo projekt
  • kodkomplettering med Racer
  • hantera Rostverktygskedjor
  • Kodlinting
  • projektspecifik konfiguration
  • kodformatering
  • gå till definition
  • Hover för dokumentation
  • hitta referenser
  • disposition för filen och projektet
  • Komplettera automatiskt Out-of-the-box
  • kodmarkering

Racer

  • tillhandahåller intelligent kodkomplettering och ”find definition”

jag använder språk-Rust, Linter-Rust, Racer (autocomplete) och atom-beautify på en rustup-installation. Att ställa in vägarna tog ett tag men det fungerar ganska bra. Jag försökte också byta till Tokamak för ett tag sedan, men det fungerade inte för mig.

Jag kör min rostkod i ett separat zsh-fönster som är kaklat på sidan av någon Gnome-tillägg och alltid synlig (jag känner mig inte redo att gå i3). Med ett filträd, en kodvy, en minimap och ett terminalfönster finns det totalt fyra kolumner och det känns lite trångt ibland. När jag inte har en stor bildskärm ansluten till min bärbara dator kör jag atom i fullskärm.

— roSievers på rost-lang.org

Jag använde Atom för rost i ca 9 månader, har tidigare använt Atom för all min Python-utveckling. Jag gjorde ungefär samma som @roSievers ovan, men jag hittade återkommande problem på macOS (speciellt med miljövariabler som inte passerade utan krångel). Jag kunde aldrig få Tokamak att fungera ordentligt.

— – pwrdwnsys på rust-lang.org

ärligt talat tror jag inte att sublime jämför med funktionaliteten som finns i atom för rust.

starthastigheten är långsam, men allt annat är helt acceptabelt.

och jag föredrarlinter ochlinter-rust paket, eftersom de kommer att visa dig kompilera fel och varningar inline Macau sec när du trycker på ctrl+S!

— /u/flygande får på /r/rost

förmörkelse korrosion (förmörkelse IDE för Rust Utvecklare)

Eclipse IDE för Rust-Utvecklare (KREDITKORROSION på Github)
  • hjälp om du redan är van vid Eclipse
  • integration med Rust-språkservern och lasten
  • slutförande assist
  • dokumentation Hover
  • diagnostik
  • formatering
  • variabler Visa
  • GDB konsol
  • brytpunkter
  • expression utförande
  • nytt projekt guiden
  • Verktygsledning
  • TOML fil redigering stöd
  • export låda guiden
  • rost språk serverinställningar
  • projekt kontur
  • mörkt tema
  • problem Visa
  • Git integration (endast tillgänglig (gratis)

det har också export som låda, utförande och felsökningsstöd (över gdb) integration; dessa tillhandahålls inte av RLS utan genom direkt integration med cargo och rust-gdb

– / u / mickael_istria on / r / rust