En esta entrada instalaré Rust en otra computadora y haré la instalación de VSCode (Visual Studio Code) ya que en las entradas anteriores usaba Notepad++. Ahora quiero probar las funcionalidades de autocompletado que proporciona usar VSCode conectado con un plugin/servidor del idioma Rust.
Para la instalación de Rust los pasos son similares a los vistos en la primera entrada (
ver entrada). Vamos a
https://www.rust-lang.org/tools/install y en mi caso detectó que estoy usando Windows. Luego seleccionamos la versión de rustup que deseamos instalar ya sea 32-bit o 64-bit. Ejecutamos el instalador y seguimos las instrucciones. Si es necesario en algún punto nos va a pedir instalar algunas herramientas de C++ de las páginas de windows. Estas herramientas son el "Visual C++ Build Tools" que pueden ser seleccionados e instalados desde el instalador de Visual Studio, sin necesidad de instalar Visual Studio completo.
Para instalar Visual Studio Code (VSCode) los pasos son similares a los descritos en las segunda entrada (
ver entrada). La página de opciones de descarga es
https://code.visualstudio.com/Download y seleccionamos la opción que deseamos según el método de instalación y nuestro sistema operativo. Ejecutamos el instalador si usamos el instalador ejecutable (.exe) y seguimos las pantallas.
Una vez instalados todas estas herramientas podemos abrir la línea de comandos ("cmd"), navegar a una carpeta de proyectos usando "cd <directorio del proyecto>" y usar el comando
cargo new para que cargo cree una carpeta con todo lo que necesitamos para un nuevo proyecto de Rust. En este caso siempre empiezo con "cargo new helloworld".
Uso el comando "cd helloworld". Después uso el comando "code ." para abrir Visual Studio Code en esta misma carpeta. Genera el siguiente mensaje:
 |
Mensaje de la esquina inferior derecha donde pregunta por Git |
Visual Studio Code detecta la carpeta oculta ".git" que generó "cargo" en esta carpeta. Me dice que no encontró Git. Git es un programa gratuito de control de versiones de archivos de texto. Git es un estándar implícito para administrar las versiones de código de bases de código fuente. De hecho GitHub tiene como su base el modelo de Git. En el caso del mundo de los juegos de vídeo tenemos que administrar recursos que no sólo son el código. Recursos como videos, imágenes, fuentes de texto, texturas, etc. Estos recursos no encajan muy bien en el modelo de Git por lo cual para administrarlos podemos usar otras opciones con un modelo diferente y más intuitivo, como por ejemplo el usado por SVN. Sin embargo para juegos muy muy pequeños donde sólo tenemos 1 desarrollador y donde no se espera que cambien muchos los recursos no debería de ser un problema muy grande usar Git. Para instalar Git tenemos que ir a la página de Git (
https://git-scm.com/downloads) y descargar el instalador de Git.
Para instalar Git navegamos las pantallas del instalador dejando las opciones predeterminadas. Para ver si esto resuelve nuestro problema cierro la ventana del Visual Studio Code y vuelvo a abrirla con el comando "code .". Y ahora VSCode sí lo detecta ya que no aparece ese mensaje anterior de "Git not found".
Ahora abrimos el archivo principal "main.rs" y podemos ver como muestra los colores en la sintaxis del idioma y en la esquina inferior derecha dice "Rust" que muestra que detectó el idioma.
 |
Aparece "Rust" en la esquina inferior derecha y la sintaxis de Rust se muestra en los colores utilizados en el archivo "main.rs" |
Visual Studio Code tiene la posibilitdad de comunicarse con un servidor de idioma o "language server" que le permite agregar funcionalidades del idioma como autocompletado. En el caso de Rust tenemos dos opciones principales al momento de escribir esta entrada: rls (rust language server) y rust-analyzer. Resulta que al momento de escribir esta entrada parece ser que rust-analyzer tiene más funcionalidad y forma parte de lo que sería el esfuerzo para llegar a "rls 2.0". De hecho intenté instalar rls en mi instalación inicial pero por alguna razón no logró funcionar, es por esta razón que ahora intentaré con rust-analyzer.
En la fecha que se escribió esta entrada "rust-analyzer" ya fue liberado al púbico y puesto como una extensión pública para Visual Studio Code. Para instalar rust-analyzer simplemente lo buscamos en el menú para instalar extensiones de Visual Studio Code y le damos click en install:
 |
La sección de extensiones. El buscador de extensiones para buscar "rust-analyzer". La opción de "Rust-analyzer" y el botón de "Install". |
Con estos pasos instala la extensión. Después de instalar la extensión puede que una notificación pida descargar el servidor del idioma para que la extensión pueda funcionar correctamente. Si este es el caso le damos click en la opción de descargar.
 |
El popup que aparece en la esquina inferior derecha pidiendo que se instale el servidor del idioma ("Language server"). Le damos click en la opción que dice "Download now". |
Puede que después de instalarse puede que siga mandando mensajes de error. Por ejemplo a mi me apareció el mensaje "rust-analyzer failed to load workspace: Failed to find sysroot for cargo.toml file ...".
De hecho alrededor del día en el que escribí esta entrada publicaron en el Reddit oficial de Rust una pregunta sobre exactamente este error:
https://www.reddit.com/r/rust/comments/f6rxyj/rustanalyzer_failed_to_load_workspace_failed_to/. Mencionan que la forma de resolver este error es ejecutar el comando "rustup component add rust-src" en la consola:
 |
Ejecutando "rustup component add rust-src" |
Con esto el error que aparecía en Visual Studio Code desaparece. El comando anterior "rustup component add rust-src" va a ser agregado como parte de la instalación en futuras versiones. Este paso venía descrito en la página oficial de rust-analyzer en la sección de instalación:
https://rust-analyzer.github.io/manual.html
También no nos olvidemos de instalar "rustfmt" y "clippy" con los comandos correspondientes en la consola:
- rustup component add rustfmt
- rustup component add clippy
 |
Confirmando que rustfmt y clippy están instalados |
Para probar que rust-analyzer funciona correctamente podemos probar presionando las teclas que vienen en la guía:
https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/features.md o usando las opciones de autocompletado que también vienen descritas en el mismo documento:
- "Ctrl+t" para buscar los tipos de datos, funciones y módulos. Usamos "*" para buscar en las dependencias en vez de nuestro espacio de trabajo actual. Usamos "#" para buscar funciones en vez de tipos de datos.
- "Ctrl+Shift+o" para buscar símbolos/texto en el documento que está abierto.
- Proporciona sugerencias según lo que se escribe y también hay otras expresiones que pueden usarse para generar código más rápidamente.
 |
Autocompletado de Rust en Visual Studio Code |