Articles

Was ist die beste IDE für die Entwicklung in Rust?

Tremaine Eto
Tremaine Eto

Folgen Sie

13. Mai 2019 · 12 Minuten Lesezeit

Welche RUSTIDEEN sollten Sie wählen?

Rust ist laut Stack Overflow Insights die „beliebteste“ Sprache des Jahres 2018 mit einer unglaublichen Bewertung von 78,9% — Rustaceans da draußen sind im Durchschnitt eindeutig glücklich. Rust erschien jedoch nicht im Abschnitt „Beliebteste Technologien“ derselben Umfrage, was darauf hinweist, dass die Anzahl der Gesamtbenutzer immer noch recht gering ist.

Es sollte nach der Umfrage nicht überraschen, dass viele Leute es eilig haben, es auszuprobieren, und wenn diese Zeit kommt, stellt sich unweigerlich die Frage: Welche IDE sollten Sie verwenden, um in Rust zu entwickeln?

Ab heute gibt es kein klares Monopol auf Rust-IDEs und somit keinen klaren Gewinner. So sehr es sich anfühlt, dass dies verwirrend sein kann, Dies kann tatsächlich eine gute Sache sein, da es eine Vielzahl von Möglichkeiten gibt, die letztendlich auf die Benutzerpräferenz zurückzuführen sind.

Dieser Artikel wird viele Internetmeinungen aufgreifen und versuchen, sowohl die Vor- als auch die Nachteile zu beleuchten.

IntelliJ IDEA mit IntelliJ Rust Plugin

Rust mit IntelliJ IDEA (credit matklad auf GIPHY)

Den Installationslink finden Sie hier auf der IntelliJ Rust-Website.

  • Open-Source
  • Geschrieben von einigen JetBrains Mitarbeitern und Freiwilligen
  • Kein Debugging

EDIT (5/28/19): Laut Leser Chris Vest:

Es kann Debuggen, wenn es in CLion installiert ist.

  • Kostenlos für Community Edition, Lizenz für Premium-Version
  • Refactoring-Funktionen
  • Unterstützt das Hinzufügen neuer Module
  • Unterstützt das Stubbing von Trait-Implementierungen

Der Funktionsumfang ist erstaunlich, aber ich finde es langsam … Hat noch jemand dieses Problem? Es dauert manchmal Minuten, bis die Syntax und die Fehlerhervorhebung aktualisiert werden, nachdem ich neuen Code eingegeben habe.

— /u/NeuroXc on /r/rust

Ich habe beide vim mit dem rust verwendet.vim Plugin und Intellij mit seinem Rust Plugin. Intellij hat die vollständigste IDE-Erfahrung, die ich ausprobiert habe, und die besten Abschlüsse, aber ich bevorzuge immer noch vim.

— /u/Zethra auf / r/rust

Ich benutze Intellij mit dem Rust Plugin. Ich verwende Jetbrains-IDEs bereits häufig für meine Arbeit, daher war es sinnvoll, sich daran zu halten.

— / u/Machinewizard auf / r /rust

Ich hatte intellij aufgrund des fehlenden Debuggers gemieden (funktioniert nur in clion).

Beim Ausprobieren von Intellij funktionierte die Fertigstellung sofort (nach dem ersten Index) großartig. Aber dann fing ich an, auf seltsame Dinge zu stoßen. Ich habe nightly nichts eingerichtet, aber es vervollständigt die Dinge in nightly. Es sieht so aus, als ob es in der IDE konform ist, bis ein Build ausgeführt wird, dann nicht. Ich kann nicht herausfinden, wie es diese erhält oder wie es deaktiviert werden kann.

Intellij hat Tonnen von Refactors, andere nicht. Es hat Dinge, die ich in vs Code verpasst habe, für die ich Feature-Anfragen habe.

Es hat jedoch andere Probleme, wie es zufällig sagen wird, dass Dinge nicht kompilieren, die tun. Es wird fehlende Methode sagen. Wenn Sie jedoch die Zeile löschen, wird sie vervollständigt, dann sagen Sie erneut fehlende Methode.

Dann nur eine Randnotiz, Intellij ist bei weitem die schwerste IDE. Es läuft kaum auf meinem Laptop (der in aller Fairness wirklich alt ist, und ich sollte wahrscheinlich einen anderen bekommen), wo die anderen gut „funktionieren“ (was auch immer Sie das für Eclipse definieren möchten, und vs Code war großartig, bis ich es tat was auch immer, um es zu brechen).

Ich denke, die wirkliche Antwort ist, dass wir noch nicht IDE sind.

— / u/r3vj4m3z auf /r/rust

IntelliJ rust Plugin ist wirklich gut. Ich habe vim +racer+ycm für eine Weile benutzt, und ich liebe Vim, aber besonders für große Produktionsprojekte mit vielen Modulen und tiefen Hierarchien ist IntelliJ einfach viel produktiver (Sachen wie rename struct field funktioniert über die gesamte Codebasis)

— / u/neuronsguy on / r/rust

Intellij-rust war sicherlich extrem einfach zu handhaben, aber das Aufblähen von IJ selbst hat mich vertrieben.

— / u/Cldfire auf /r/rust

Es funktioniert sehr gut und hat eine aktive Entwicklung.
Ich empfehle es auf jeden Fall, wenn Sie die RAM- und CPU-Auslastung sparen können.

– chimmihc auf rust-lang.org

EDIT 6/24/19: Leser Joseph Noose hatte Folgendes hinzuzufügen:

Für mich war das große Plus von IntelliJ über VSS die Let-Vervollständigungen, die manchmal beim Umgang mit 3rd-Parteien schneller und einfacher zu sehen sind, welches Objekt zurückgegeben wird. Ich fand mit einigen der Diesel-Sachen war es besonders nützlich, da die Objekte ziemlich lang sind

CLion mit IntelliJ Rust Plugin

Eine weitere Option mit JetBrains, CLion ist eine C / C ++ IDE, die auch das IntelliJ Rust Plugin unterstützen kann.

  • Ermöglicht die Verwendung eines Build-Systems
  • Unterstützung für das Debuggen von Rust-Anwendungen – im Gegensatz zu IntelliJ IDEA
  • Erfordert eine kommerzielle Lizenz (oder kostenlos mit .edu E-Mail-Adresse)

Clion mit dem Rust-Plugin für IntelliJ ist wahrscheinlich so nah an einer Rust-spezifischen IDE, die existiert; Das Eclipse-Projekt kann jedoch eine machen, es wird derzeit diskutiert.

— /u/steveklabnik1 auf /r/Rost

Debugging-Unterstützung in CLion ist ausgezeichnet! Bekommt nicht annähernd genug Lob. Inline-Laufzeitwerte im Code an Haltepunkten sind nett (1), ebenso wie der Debugging-Inspektor (2) und das Setzen bedingter Haltepunkte … sehr komfortabel.
Sehen: 1 2 3

— /u/Monadic_Malic_Acid on /r/rust

VSCode with Rust plugin

VSCode with Rust (credit rust-lang.org)
  • Open-Source (kostenlos)
  • Integrierte Cargo-Unterstützung
  • Codevervollständigung
  • Zur Definition springen, Definition betrachten, alle Referenzen finden, Symbolsuche
  • Typen und Dokumentation zum Hover
  • Codeformatierung
  • Refactoring (Umbenennen, deglob)
  • orschläge aus Fehlern anwenden

  • Snippets
  • Build-Aufgaben
  • Unterstützt vom Rust Language Server (RLS)
  • Format beim Speichern, falls gewünscht

VSCode verfügt über eine gute Unterstützung für den Sprachserver, was bedeutet, dass die Sprache neue RLS-Funktionen funktionieren darin sehr gut. Es ist eher eine traditionelle IDE-Erfahrung, aber ich bevorzuge es, eine tmux-Sitzung als IDE mit Vim als Code-Editor zu verwenden.

— /u/IDidntChooseUsername auf /r/rust

+1 für VSCode + Erweiterung. Warum? Manche Leute wollen einfach nur die Welt brennen sehen. Aber im Ernst. VSCode ist ein wirklich, wirklich guter Editor.

Ich benutze es für C, C ++, C #, Javascript, Erlang, Prolog, Lisp, F # und jetzt Rust.

Kein Emacs pinky.

Funktioniert einfach direkt aus der Box.

Command pallete ist auch ziemlich baller.

Sie haben kürzlich ihr Grep-System durch die Rust-Version ersetzt und eine massive Leistungssteigerung erzielt. Ich bin buchstäblich hier wegen VSCode Release Notes von vor etwa einer Woche oder 2.

Solide Git-Integration.

Plattformübergreifend.

Habe ich schon erwähnt, dass ich die Welt gerne brennen sehe?

— on / r/rust

Ich verwende VS-Code mit der Rust-Erweiterung für alle meine Rust-Codierungen. Alles, was ich mit den von der Erweiterung bereitgestellten Tastenkombinationen nicht tun kann, kann mit der integrierten Konsole ausgeführt werden, sodass ich wirklich keine Beschwerden habe.

— / u/YourGamerMom auf / r/rust

Ich würde VSCode empfehlen, das Rust-Plugin bietet Autovervollständigung, Syntaxhervorhebung und einige andere nette Funktionen. Vor allem aber gibt es ein nettes LLDB-Plugin, das visuelles Debugging ermöglicht, was gegenüber anderen IDEs, die ich ausprobiert habe, von Vorteil ist.

Und es ist plattformübergreifend.

– mczarnek auf rust-lang.org

Nachdem ich jeweils mehr als 3 Wochen mit intellij-rust, vscode-rust und verschiedenen Plugins für die Rust-Unterstützung in Sublime Text 3 verbracht habe, kann ich mit Sicherheit sagen, dass die beste Erfahrung, die ich bis zu diesem Zeitpunkt gemacht habe, mit den vscode-Plugins war … Vscode war der perfekte Bereich für mich; Es war sofort einsatzbereit (da ich bereits die notwendigen Tools zum Installieren hatte und die rust src-Komponente über rustup hinzugefügt wurde, hat alles geklappt der Box) und behält immer noch die Editor-Erfahrung bei. Das einzige, was ich nicht zum Laufen bringen konnte, ist das LLDB-Frontend, aber das liegt an meiner Verwendung der WSL, nicht an der Schuld des Plugins selbst.

TL:DR, ich empfehle vscode.

— / u/Cldfire auf / r/rust

(Neo)vim mit Rust-Plugins (wie rust.vim, vim.racer)

Beispiel für Rust mit Vim (credit Jovansonlee Cesar auf GitHub)

Wirklich an Vim gewöhnt und kann nicht von seinen verschiedenen Textmanipulationsbefehlen abweichen? Haben Sie keine Angst — viele Leute verwenden Vim, wenn sie in Rust entwickeln.

Sie können eine Plain Vanilla Vim-Installation verwenden oder andere Geschmacksrichtungen wie Neovim verwenden.

Neovim

  • Open-Source
  • Community-driven
  • Zugriff auf asynchrone Ausführung von Jobs / Aufgaben in vim (h / t Dhruva Sagar auf StackOverflow)

Unabhängig davon, welche Variante von Vim Sie verwenden, können Sie Rust-spezifische Plug-Ins nutzen.

Rost.vim

  • Rust-Dateierkennung
  • Syntaxhervorhebung
  • Formatierung
  • Syntaktische Integration
  • Erfordert Vim 8 oder höher für volle Funktionalität

vim.racer

  • Ermöglicht es vim, Racer für Rust-Code-Vervollständigung und Navigation zu verwenden

Vim, und es ist irgendwie schmerzhaft tbh. Ich bin offen für Vorschläge. Die Textmanipulationsseite von Vim ist unglaublich. Es ist einfach umwerfend. Aber der Rest von Vim ist ziemlich scheiße, und mit den Arten von komplexen Fehlern, die Sie in Rust bekommen, ist es ziemlich schmerzhaft, zum Terminal zu wechseln.

Ich möchte zu VSCode oder ähnlichem wechseln, aber das Fehlen von Vim-Bearbeitungsbefehlen ist wirklich stark.

— / u/ jl2352 auf / r /rust

Mit genügend Plugins (Dinge wie Sprachserver usw.) können Sie den Rest von (neo) vim wirklich nutzbar machen, imo.

— /u/ashfordneil auf /r/rust

Ich habe beide vim mit dem rust verwendet.vim Plugin und Intellij mit seinem Rust Plugin. Intellij hat die vollständigste IDE-Erfahrung, die ich ausprobiert habe, und die besten Abschlüsse, aber ich bevorzuge immer noch vim. Ich würde empfehlen, die auf https://areweideyet.com/ erwähnten Setups auszuprobieren und zu sehen, was für Sie am besten funktioniert.

— /u/Zethra auf /r/rust

Interessanterweise verwenden einige Puristen überhaupt keine Rust-Plugins!

Vim mit eingebauter Autovervollständigung (+ autocomplpop). Flüchtling. Das ist es im Grunde … Keine ausgefallenen Plugins mehr! Und ja, ich arbeite mit diesem Setup an großen Codebasen!

— /u/musicmatze auf /r/rost

Emacs

emacs-racer von racer-rust (credit RecordNotFound)

Ich habe das Gefühl, wenn Sie vi(m) einschließen, sollten Sie emacs wahrscheinlich zumindest erwähnen.

Fügen Sie hinzu, dass es ein Projekt gibt, Emacs nach rust zu portieren. Ich benutze es als Drop-In-Ersatz für Emacs auf meinen Linux-Computern.

Hinweis: Ich benutze Emacs eigentlich nicht für schwere Rust-Entwicklung. Ich gehe meine Rust-Lernreise mit IntelliJ IDEA durch.

— Chris Woods in den Kommentaren dieses Beitrags

  • Mit Racer, bietet Code-Vervollständigung
  • Hat Cargo (Paketmanager) Unterstützung mit Tastenkombinationen
  • Hat rust-lang-Konfiguration für Rust-spezifische Programmierung in Emacs
  • Unterstützt rustfmt mit rust-lang
  • Kostenlos

Sie sollten MELPA und use-package verwenden, um Pakete in emacs zu installieren.

Die Konfiguration von Rust für die Verwendung von RLS unter Emacs ist für Anfänger etwas schwierig. Hier ist meine RLS—Konfiguration, wenn Sie interessiert sind: https://github.com/CSRaghunandan/.emacs.d/blob/master/setup-files/setup-lsp.el und https://github.com/CSRaghunandan/.emacs.d/blob/master/setup-files/setup-rust.el

– / u/CSRaghunandan on /r/rust

Ich sage das als jemand ich lerne immer noch Rust und nicht als Empfehlung für Leute, die echte Beiträge zum Produktionscode leisten.

Ich benutze Emacs im Rust-Modus ohne andere Schnickschnack.

Wenn mein Code kompliziert genug ist, dass ich eine IDE brauche, um ihm zu folgen, ist er kompliziert genug, dass jemand anderes ihm mit dieser Hilfe nicht folgen kann. Und wenn ich die automatische Vervollständigung benötige, um zu wissen, welche Funktion ich aufrufen möchte, und ihre Typensignatur, dann habe ich wahrscheinlich kein Problem damit, sie aufzurufen, ohne den Dokumenten mindestens ein einmaliges Überschreiben zu geben.

— /u/bxtk auf /r/rost

Sublime mit Rost Verbessert

Sublime mit Rust Enhanced (credit rust-lang via packagecontrol.io )
  • Open-Source (kostenlos)
  • Gehe zu irgendetwas
  • Gehe zu Definition
  • Split editing
  • Low profile

Es funktioniert ziemlich gut, könnte aber ein bisschen benutzerfreundlicher sein. Dies ist jedoch eher ein sublimes Problem als ein Plugin-Problem.

— / u /boooooomba auf / r/rust

Ich habe es versucht, aber ich vermisste Refactoring-Tools, ein gutes integriertes Terminal und tippe auf Hover im Vergleich zum VSCode + Rust-Plugin.

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

Das einzige Ärgernis ist, dass es Tests nicht berücksichtigt und daher keine Kompilierungsfehler darin erkennt und viele Warnungen über nicht verwendete Funktionen ausspuckt. (Schreibtests zuerst für meine Bibliothek)

— / u/Rawler82 auf / r /rust

Es hat nicht die besten Funktionen, aber es ist schnell und klein (wenig RAM und Speicherplatz).

— / u /razrfalcon auf / r/rust

Die Plugin-Situation von Sublime Text 3 ist zumindest für mich ziemlich wackelig; Während ich die Dinge hauptsächlich unter macOS zum Laufen bringen konnte, konnte ich die automatische Vervollständigung unter Windows 10 nie zum Laufen bringen (zusätzlich zu der ziemlich langen und schmerzhaften Einrichtungszeit).

— /u/Cldfire auf /r/rust

Einige Leute verwenden keine zusätzlichen Plug-Ins mit Rust Enhanced.

Ich benutze Sublime Text für alles. Was das Bauen angeht, halte ich einfach ein Terminalfenster am unteren Bildschirmrand geöffnet, in dem cargo watch ausgeführt wird.

Ich habe keine Rust-spezifischen Plugins, aber angesichts aller Empfehlungen hier denke ich, dass ich das Rust Enhanced Plugin später ausprobieren werde.

— /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 datei mit rustfmt formatieren (ctrl-shift-c oder cmd-shift-c auch im Kontextmenü)
  • Beim Speichern formatieren (standardmäßig deaktiviert, siehe atom-ide-ui Einstellungen)

Sprache-rust

  • >Fügt Rust-Dateien in Atom Syntaxhervorhebung und Snippets hinzu

linter-rust

  • Linting Ihre Rust-Dateien in Atom mit rustc und cargo
  • Dateien werden beim Öffnen oder Speichern überprüft

токамак (tokamak)

  • Syntaxhervorhebung
  • Erstellen eines Cargo-Projekts
  • Unterstützung für Cargo rust toolchains verwalten
  • Code Linting
  • Projektspezifische Konfiguration
  • Codeformatierung
  • Zur Definition gehen
  • Hover für Dokumentation
  • Referenzen finden
  • Gliederung für die Datei und das Projekt
  • Autocomplete out-of-the-box
  • Code-Hervorhebung

racer

  • Bereitstellung intelligenter Code-Vervollständigung und „find definition“

Ich verwende language-rust, linter-rust, racer (autocomplete) und atom-beautify auf einer Rustup-Installation. Das Einrichten der Pfade hat eine Weile gedauert, aber es funktioniert ziemlich gut. Ich habe vor einiger Zeit auch versucht, zu Tokamak zu wechseln, aber das hat bei mir nicht funktioniert.

Ich führe meinen Rust-Code in einem separaten zsh-Fenster aus, das seitlich von einem Gnome-Addon gekachelt und immer sichtbar ist (ich fühle mich nicht bereit, i3 zu gehen). Mit einem Dateibaum, einer Codeansicht, einer Minikarte und einem Terminalfenster gibt es insgesamt vier Spalten und es fühlt sich manchmal etwas eng an. Wenn ich keinen großen Monitor an meinen Laptop angeschlossen habe, führe ich Atom im Vollbildmodus aus.

— roSievers auf rust-lang.org

Ich habe Atom ungefähr 9 Monate lang für Rust verwendet, nachdem ich zuvor Atom für meine gesamte Python-Entwicklung verwendet hatte. Ich habe das gleiche gemacht wie @roSievers oben, aber ich habe wiederkehrende Probleme unter macOS gefunden (insbesondere wenn Umgebungsvariablen nicht ohne viel Aufhebens durchlaufen werden). Ich konnte Tokamak nie richtig zum Laufen bringen.

– pwrdwnsys auf rust-lang.org

Ehrlich gesagt glaube ich nicht, dass Sublime mit der Funktionalität von Atom für rust vergleichbar ist.

Die Startgeschwindigkeit ist langsam, aber alles andere ist völlig akzeptabel.

und ich bevorzuge die linter und linter-rust Pakete, da sie dir Kompilierungsfehler und Warnungen inline ½ sec zeigen, nachdem du Strg+s gedrückt hast!

— /u/fliegendes Schaf auf /r/rost

Eclipse Corrosion (Eclipse IDE für Rust-Entwickler)

Eclipse-IDE für Rust-Entwickler (credit Corrosion auf GitHub)
  • Hilfreich, wenn Sie bereits an Eclipse gewöhnt sind
  • Integration mit dem Rust Language Server und Cargo
  • Completion Assist
  • Documentation Hover
  • Diagnose
  • Formatierung
  • Variablenansicht
  • GDB-Konsole
  • Haltepunkte
  • Ausdrucksausführung
  • Neuer Projektassistent
  • Toolchain-Management
  • Unterstützung für die Bearbeitung von TOML-Dateien
  • Exportkistenassistent
  • Rust Language Server-Einstellungen
  • Projektübersicht
  • Dunkles Thema
  • Problemansicht
  • Git-Integration (nur verfügbar open-Source (kostenlos)

Es hat auch Export als Kiste, Ausführung und Debug-Unterstützung (über GDB) Integration; diese werden nicht von RLS bereitgestellt, sondern durch direkte Integration mit cargo und rust-gdb

— /u/mickael_istria on /r/rust