Articles

Quel est le meilleurE pour développer dans Rust ?

Tremaine Eto
Tremaine Eto

Suivre
Mai 13, 2019 · 12 min de lecture

Quelles IDÉES de rouille devriez-vous choisir?

Rust est, selon Stack Overflow Insights, la langue la plus « aimée » de 2018 avec une note incroyable de 78,9% — les Rustaceans sont clairement heureux en moyenne. Cependant, Rust n’apparaissait pas dans la section « Technologies les plus populaires » de la même enquête, ce qui indique que le nombre global d’utilisateurs est encore assez faible.

Il ne devrait pas être surprenant après l’enquête que de nombreuses personnes se précipitent pour l’essayer, et lorsque ce moment viendra, la question se pose inévitablement: quelE devriez-vous utiliser pour développer dans Rust?

À ce jour, il n’y a pas de monopole clair sur lesEs de rouille et donc pas de gagnant clair. Même si cela peut rendre cela déroutant, cela peut en fait être une bonne chose car il existe une variété de choix qui se résumeront finalement aux préférences de l’utilisateur.

Cet article prendra beaucoup d’opinions sur Internet et tentera d’éclairer à la fois les avantages et les inconvénients.

IDÉE IntelliJ avec le plugin IntelliJ Rust

Rust avec IntelliJ IDEA (crédit matklad sur GIPHY)

Vous pouvez trouver le lien d’installation ici sur le site web IntelliJ Rust.

  • Open-source
  • Écrit par des employés et des bénévoles de JetBrains
  • Pas de débogage

EDIT (28/5/19): Selon le lecteur Chris Vest:

Il peut faire du débogage lorsqu’il est installé dans CLion.

  • Gratuit pour l’édition communautaire, licence pour la version premium
  • Capacités de refactorisation
  • Prend en charge l’ajout de nouveaux modules
  • Prend en charge l’élimination des implémentations de traits

L’ensemble de fonctionnalités est incroyable, mais je le trouve lent Does Est-ce que quelqu’un d’autres ont ce problème? Il faut parfois quelques minutes pour que la syntaxe et la mise en évidence des erreurs se mettent à jour après que j’ai tapé un nouveau code.

—/u/NeuroXc on/r/rust

J’ai utilisé les deux vim avec la rouille.plugin vim et Intellij avec son plugin Rust. Intellij a l’expérience id la plus complète que j’ai essayée et les meilleures finitions, mais je préfère toujours vim.

—/u/Zethra on/r/rust

J’utilise Intellij avec le plugin Rust. J’utilise déjà beaucoup lesEs Jetbrains pour le travail uni, il était donc logique de s’en tenir à cela.

—/u/FlourineWizard on/r / rust

J’avais évité intellij en raison de l’absence de débogueur (ne fonctionne que dans clion).

En essayant intellij, l’achèvement a fonctionné immédiatement (après l’index initial). Cependant, j’ai commencé à rencontrer des choses étranges. Je n’ai rien configuré tous les soirs, mais cela complète les choses tous les soirs. Il semble qu’il se conforme à l’E, jusqu’à ce qu’une build soit exécutée, alors ce n’est pas le cas.Je ne peux pas comprendre comment il les obtient ou comment le désactiver.

Intellij a des tonnes de refactors que d’autres n’ont pas. Il a des choses que j’ai manquées dans le code vs pour lesquelles j’ai des demandes de fonctionnalités.

Cependant, il a d’autres problèmes comme il dira au hasard que les choses ne compilent pas ce qu’elles font. Il dira méthode manquante. Cependant, si vous supprimez la ligne, elle viendra la compléter, puis dites à nouveau méthode manquante.

Ensuite, juste une note de côté, intellij est de loin l’E le plus lourd. Il fonctionne à peine sur mon ordinateur portable (ce qui est vraiment vieux en toute justice, et je devrais probablement en obtenir un autre), où les autres « fonctionnent » bien (tout ce que vous voulez définir pour eclipse, et le code vs était génial jusqu’à ce que je fasse tout pour briser l’achèvement).

Je pense que la vraie réponse est que nous ne sommes pas encore ID.

—/u/r3vj4m3z sur/r/rust

Le plugin IntelliJ rust est vraiment bon. J’ai utilisé vim + racer + ycm pendant un moment, et j’adore Vim, mais surtout pour les gros projets de production avec beaucoup de modules et de hiérarchies profondes, IntelliJ est juste beaucoup plus productif (des trucs comme renommer le champ de structure fonctionne sur toute la base de code)

—/u/neuronsguy on/r / rust

Intellij-rust était certainement extrêmement facile à utiliser, mais le ballonnement d’IJ lui-même m’a chassé.

—/u/Cldfire on/r/rust

Cela fonctionne très bien et a un développement actif.
Je le recommande vraiment si vous pouvez épargner l’utilisation de la RAM et du processeur.

— chimmihc sur rust-lang.org

EDIT 24/06/19:Le lecteur Joseph Noose avait ce qui suit à ajouter:

Pour moi, le gros avantage d’IntelliJ sur VSS était les complétions de let, que parfois, lorsque vous traitez avec des tiers, il devient plus rapide et plus facile de voir quel objet est renvoyé. J’ai trouvé avec certains trucs diesel que c’était particulièrement utile car les objets sont plutôt longs

CLion avec le plugin IntelliJ Rust

Une autre option avec JetBrains, CLion est unE C / C ++ qui peut également prendre en charge le plugin IntelliJ Rust.

  • Permet l’utilisation du système de construction Cargo
  • Prise en charge du débogage des applications Rust – contrairement à IntelliJ IDEA
  • Nécessite une licence commerciale (ou gratuite avec.adresse e-mail edu)

Clion avec le plugin Rust pour IntelliJ est probablement aussi proche d’unE spécifique à Rust qui existe; cependant, le projet Eclipse peut en créer un, il est en cours de discussion.

—/u/steveklabnik1 on/r/rust

La prise en charge du débogage dans CLion est excellente! Il ne reçoit pas assez d’éloges. Les valeurs d’exécution intégrées dans le code aux points d’arrêt sont agréables (1), de même que l’inspecteur de débogage (2), et la définition de points d’arrêt conditionnels – très confortable à faire.
Voir: 1 2 3

— /u/Monadic_Malic_Acid on /r/rust

VSCode with Rust plugin

VSCode with Rust (credit rust-lang.
  • Open-source (gratuit)
  • Prise en charge intégrée du fret
  • Complétion du code
  • Saut à la définition, définition en coup d’œil, recherche de toutes les références, recherche de symboles
  • Types et documentation sur le survol
  • Formatage du code
  • Refactoring (renommer, déglob)
  • Erreur gribouille et applique les suggestions des erreurs
  • Extraits
  • Tâches de construction
  • Alimenté par le serveur de langue Rust (RLS)
  • Format lors de la sauvegarde, si vous le souhaitez

VSCode prend en charge un bon serveur de langue, ce qui signifie que les nouvelles fonctionnalités RLS fonctionnent très bien. C’est plus une expérience traditional traditionnelle, mais je préfère utiliser une session tmux comme ID avec Vim comme éditeur de code.

—/u/IDidntChooseUsername sur/r/rust

+1 pour VSCode +Extension. Pourquoi? Certaines personnes veulent juste regarder le monde brûler. Mais sérieusement. VSCode est un très, très bon éditeur.

Je l’utilise pour C, C++, C#, Javascript, Erlang, Prolog, Lisp, F# et maintenant Rust.

Pas d’emacs pinky.

Fonctionne dès la sortie de la boîte.

Command pallete est également assez baller.

Ils ont récemment remplacé leur système grep par la version rust et ont obtenu une augmentation massive des performances. Je suis littéralement ici à cause des notes de version de VSCode d’il y a environ une semaine ou 2.

Intégration Git solide.

Multiplateforme.

Ai-je déjà mentionné que j’aime regarder le monde brûler?

—on/r/rust

J’utilise le code VS avec l’extension rust pour tout mon codage rust. Cela m’a très bien servi jusqu’à présent, tout ce que je ne peux pas faire avec les combinaisons de touches fournies par l’extension peut être fait avec la console intégrée, donc je n’ai vraiment rien à redire.

—/u/YourGamerMom on/r/rust

Je recommanderais VSCode, le plugin Rust fournit la saisie semi-automatique, la coloration syntaxique et d’autres fonctionnalités intéressantes. Mais surtout, il y a un joli plugin LLDB qui permet le débogage visuel, ce qui est un avantage par rapport aux autresEs que j’ai essayés.

Et c’est multiplateforme.

— mczarnek on rust-lang.org

Après avoir passé plus de 3 semaines à utiliser intellij-rust, vscode-rust et divers plugins différents pour le support de rust dans Sublime Text 3, je peux dire avec confiance que la meilleure expérience que j’ai eue jusqu’à présent était avec le (s) plugin(s) vscode strikes Vscode frappe la zone parfaite pour moi; il a été instantané de me mettre en marche (puisque j’avais déjà les outils nécessaires à l’installation du cargo et le composant rust src ajouté via rustup, tout a fonctionné de la boîte) et maintient toujours l’expérience de l’éditeur. La seule chose que je n’ai pas pu faire fonctionner est le frontend LLDB, mais c’est dû à mon utilisation du WSL, pas à la faute du plugin lui-même.

TL: DR, je recommande vscode.

—/u/Cldfire sur /r/rust

(Neo)vim avec des plugins Rust (comme rust.vim, vim.

Exemple de Rust avec Vim (crédit Jovansonlee Cesar sur GitHub)

Vraiment utilisé pour Vim et ne peut pas s’écarter de ses différentes commandes de manipulation de texte? N’ayez pas peur — beaucoup de gens utilisent le Vim lorsqu’ils se développent dans la rouille.

Vous pouvez opter pour une installation Vim à la vanille pure, ou vous pouvez utiliser d’autres saveurs telles que Neovim.

Neovim

  • Open-source
  • Axé sur la communauté
  • Accès à l’exécution des tâches / tâches de manière asynchrone dans vim (h/t Dhruva Sagar sur StackOverflow)

Quelle que soit la saveur de Vim que vous utilisez, vous pouvez tirer parti des plug-ins spécifiques à Rust.

rouille.vim

  • Détection de fichier de rouille
  • Coloration syntaxique
  • Formatage
  • Intégration syntaxique
  • Nécessite Vim 8 ou supérieur pour une fonctionnalité complète

vim.racer

  • Permet à vim d’utiliser Racer pour la complétion et la navigation du code Rust

Vim, et c’est un peu douloureux tbh. Je suis ouvert aux suggestions. Le côté manipulation de texte de Vim est incroyable. C’est juste hallucinant. Mais le reste de Vim est assez sh * t, et avec les types d’erreurs complexes que vous obtenez dans Rust, il est assez douloureux de passer au terminal.

Je veux passer à VSCode ou similaire, mais le manque de commandes d’édition Vim est vraiment criant.

—/u/jl2352 sur /r/ rust

Avec suffisamment de plugins (des choses comme des serveurs de langue, etc.), vous pouvez rendre le reste de (neo)vim vraiment utilisable, imo.

—/u/ashfordneil on/r/rust

J’ai utilisé les deux vim avec la rouille.plugin vim et Intellij avec son plugin Rust. Intellij a l’expérience id la plus complète que j’ai essayée et les meilleures finitions, mais je préfère toujours vim. Je recommande d’essayer les configurations mentionnées sur https://areweideyet.com/ et de voir ce qui vous convient le mieux.

—/u/Zethra on/r/rust

Fait intéressant, certains puristes n’utilisent pas du tout de plugins Rust!

Vim avec auto-complétion intégrée (+ autocomplpop). Fugitif. C’est en gros ça No Plus de plugins fantaisistes! Et oui, je travaille sur de grosses bases de code avec cette configuration !

—/u/musicmatze on/rust

Emacs

emacs-racer par racer-rust (credit RecordNotFound)

J’ai l’impression que si vous allez inclure vi (je ne sais pas si j’ai m), vous devriez probablement au moins mentionner emacs.

Add

Ajoutez à cela qu’il existe un projet pour porter emacs sur rust. Je l’utilise comme remplaçant direct d’emacs sur mes machines linux.

Remarque: Je n’utilise pas réellement emacs pour le développement de heavy rust. Je traverse mon parcours d’apprentissage de la rouille en utilisant IntelliJ IDEA.

— Chris Woods dans les commentaires de cet article

  • Avec Racer, offre la complétion du code
  • A la prise en charge de Cargo (gestionnaire de paquets) avec des combinaisons de touches
  • A la configuration rust-lang pour la programmation spécifique à Rust dans Emacs
  • Prend en charge rustfmt avec rust-lang
  • Gratuit

Vous devez utiliser MELPA et use-package pour installer des paquets dans emacs.

Configurer Rust pour utiliser RLS sur emacs est un peu délicat pour un débutant. Voici ma configuration RLS si vous êtes intéressé: https://github.com/CSRaghunandan/.emacs.d/blob/master/setup-files/setup-lsp.el et https://github.com/CSRaghunandan/.emacs.d/blob/master/setup-files/setup-rust.el

—/u/CSRaghunandan on/r/rust

Je dis cela comme quelqu’un qui apprend encore Rust, et non comme une recommandation pour les personnes qui apportent de réelles contributions au code de production.

J’utilise Emacs en mode Rouille sans autres fioritures.

Si mon code est suffisamment compliqué pour que j’aie besoin d’unE pour le suivre, c’est assez compliqué pour que quelqu’un d’autre ne puisse pas le suivre avec cette aide. Et si j’ai besoin de la saisie semi-automatique pour savoir quelle fonction je veux appeler et sa signature de type, je n’ai probablement aucune entreprise qui l’appelle sans donner les documents au moins une fois de toute façon, donc ce n’est pas un problème supplémentaire de le rechercher.

—/u/bxtk sur/r/rust

Sublime avec la rouille améliorée

Sublime avec la rouille améliorée (crédit rust-lang via packagecontrol.io )
  • Open-source (gratuit)
  • Aller à n’importe quoi
  • Aller à la définition
  • Édition fractionnée
  • Profil bas

Cela fonctionne assez bien, mais cela pourrait être un peu plus convivial. Ceci est cependant plus un problème Sublime qu’un problème de plugin.

—/u/ booooomba on/r / rust

Je l’ai essayé, mais j’ai manqué des outils de refactorisation, un bon terminal intégré, et tapez en survol par rapport au plugin VSCode + Rust.

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

Le seul inconvénient est qu’il ne prend pas en compte les tests, et ne détecte donc pas les erreurs de compilation, et crache beaucoup d’avertissements sur les fonctions inutilisées. (Écrire d’abord des tests pour ma bibliothèque)

—/u/ Rawler82 sur / r / rust

Il n’a pas les meilleures fonctionnalités, mais il est rapide et petit (faible en RAM et en espace disque).

—/u/razrfalcon sur /r/ rust

La situation du plugin de Sublime Text 3 est, du moins pour moi, plutôt bancale; alors que j’ai pu faire fonctionner les choses principalement sur macOS, je n’ai jamais pu obtenir la saisie semi-automatique sous Windows 10 (en plus du temps de configuration assez long et douloureux ).

—/u/Cldfire on/r/rust

Certaines personnes n’utilisent aucun plug-ins supplémentaire avec Rust Enhanced.

J’utilise du texte Sublime pour tout. En ce qui concerne la construction, je garde juste une fenêtre de terminal ouverte en bas de mon écran avec cargo watch en cours d’exécution.

Je n’ai pas de plugins spécifiques à Rust, mais compte tenu de toutes les recommandations ici, je pense que je vais essayer le plugin Rust Enhanced plus tard.

— /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
  • Format de fichier avec rustfmt (ctrl-shift-c ou cmd-shift-c également dans le menu contextuel)
  • Format lors de la sauvegarde (désactivé par défaut, voir atom-ide-uiparamètres)

language-rust

  • Ajoute une coloration syntaxique et des extraits aux fichiers Rust dans Atom

linter-rust

  • Linter vos fichiers Rust dans Atom, en utilisant les fichiers rustc et cargo
  • seront vérifiés lorsque vous les ouvrez ou les enregistrez

токамак (tokamak)

  • Coloration syntaxique
  • Création d’un projet Cargo
  • > Support pour le fret projets
  • Complétion du code avec Racer
  • Gestion des chaînes d’outils Rust
  • Linting du code
  • Configuration spécifique au projet
  • Formatage du code
  • Aller à la définition
  • Survolez la documentation
  • Trouvez des références
  • Contour du fichier et du projet
  • Saisie semi-automatique prête à l’emploi
  • Mise en évidence du code

racer

  • Fournissant une complétion de code intelligente et une « définition de recherche »

J’utilise language-rust, linter-rust, racer (saisie semi-automatique) et atom-beautify sur une installation rustup. La mise en place des chemins a pris un certain temps mais cela fonctionne plutôt bien. J’ai également essayé de passer au Tokamak il y a quelque temps, mais cela n’a pas fonctionné pour moi.

J’exécute mon code rust dans une fenêtre zsh séparée qui est carrelée sur le côté par un addon Gnome et toujours visible (je ne me sens pas prêt à partir i3). Avec une arborescence de fichiers, une vue de code, une minicarte et une fenêtre de terminal, il y a quatre colonnes au total et cela semble parfois un peu à l’étroit. Quand je n’ai pas de grand moniteur connecté à mon ordinateur portable, je lance atom en plein écran.

— roSievers sur rust-lang.org

J’utilisais Atom pour Rust pendant environ 9 mois, après avoir déjà utilisé Atom pour tout mon développement Python. J’ai fait à peu près la même chose que @roSievers ci-dessus, mais j’ai trouvé des problèmes récurrents sur macOS (en particulier avec les variables d’environnement qui ne sont pas transmises sans tracas). Je n’ai jamais pu faire fonctionner correctement le Tokamak.

– pwrdwnsys sur rust-lang.org

honnêtement, je ne pense pas que sublime se compare à la fonctionnalité qu’il y a dans atom pour rust.

la vitesse de démarrage est lente, mais tout le reste est totalement acceptable.

et je préfère les paquets linter et linter-rust, car ils vous montreront les erreurs de compilation et les avertissements en ligne ½ seconde après avoir appuyé sur ctrl + s!

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

Eclipse Corrosion (Eclipse Corrosion pour les développeurs de rouille)

Eclipse ID pour les développeurs Rust (crédit Corrosion sur GitHub)
  • Utile si vous êtes déjà habitué à Eclipse
  • Intégration avec le serveur de langage Rust et Cargo
  • Aide à l’achèvement
  • Survol de la documentation
  • Diagnostics
  • Mise en forme
  • Affichage des variables
  • Console GDB
  • Points d’arrêt
  • Exécution d’expression
  • Nouvel Assistant de Projet
  • Gestion de la Chaîne d’outils
  • Prise en charge de l’édition de fichiers TOML
  • Assistant d’exportation de Caisse
  • Préférences du Serveur de Langue Rouille
  • Aperçu du projet
  • Thème sombre
  • Vue des problèmes
  • Intégration Git (Uniquement disponible en package Corrosion)
  • Open-source (gratuit)

Il a également l’exportation en tant que support de caisse, d’exécution et de débogage (via GDB) intégration; ceux-ci ne sont pas fournis par RLS mais par intégration directe avec cargo et rust-gdb

—/u/mickael_istria on/r/rust