À propos du projet

RustOwl est un outil pour les développeurs Rust qui visualise les mouvements de propriété et les durées de vie des variables, destiné au débogage et à l'optimisation. Lorsque vous enregistrez du code source Rust, il est analysé, et le survol d'une variable ou d'un appel de fonction affiche les informations de propriété et de durée de vie. La visualisation utilise des soulignements colorés : - Vert : durée de vie de la variable. Un trait plein signifie définitivement vivante (prouvablement initialisée sur tous les chemins atteignant ce point) ; un trait ondulé signifie peut-être vivante (initialisée sur certains chemins mais possiblement déplacée, supprimée ou non initialisée sur d'autres). - Bleu : emprunt immuable. - Violet : emprunt mutable. - Orange : valeur déplacée / appel de fonction. - Rouge : erreur de durée de vie, comme une différence entre la durée de vie réelle et attendue, ou un chevauchement invalide de références mutables et partagées. La prise en charge des éditeurs comprend une extension VS Code (également disponible sur Open VSX pour Vscodium), un plugin Neovim et un paquet Emacs. Dans ces éditeurs, déplacer le curseur sur une variable ou un appel de fonction et attendre environ deux secondes déclenche la visualisation. Le projet implémente un serveur LSP avec un protocole étendu, afin que d'autres éditeurs puissent construire des clients selon sa spécification. Des intégrations tierces existent pour les IDE RustRover/IntelliJ et Sublime Text. Les options d'installation incluent crates.io, l'Arch User Repository (rustowl-bin) et WinGet. L'extension VS Code installe RustOwl automatiquement lors de son activation. Pour Neovim et Emacs, le serveur LSP doit être installé manuellement. Après la configuration, l'extension exécute RustOwl lors de l'enregistrement de tout programme Rust dans un espace de travail cargo ; la première analyse peut prendre du temps, mais les exécutions ultérieures utilisent la mise en cache de compilation pour réduire le temps d'analyse. Les prérequis sont cargo (installable via rustup) et un éditeur pris en charge. Le projet indique prendre en charge les cinq dernières versions de Rust au mieux. Limitations connues : en raison des spécifications de décoration de VS Code, les caractères avec des jambages comme g ou les parenthèses peuvent parfois ne pas afficher correctement les soulignements, et la macro println! produit parfois une sortie supplémentaire sans affecter significativement l'utilisabilité. Un terrain de jeu hébergé est disponible sur play.rustowl.rs.