Cómo aprender Rust sin instalar ningún software

En este artículo, aprenderemos cómo usar las acciones de GitHub para aprender Rust desde su navegador web. Codificaremos, compilaremos, probaremos, ejecutaremos y publicaremos todo desde una página web. ¡No se necesita software! Aprenda con GitHub o síganos en Twitter.

Rust es uno de los lenguajes de programación más populares de la actualidad. A los geeks alfa les encanta. Es el lenguaje de programación más querido de Stackoverflow durante los últimos 4 años seguidos.

Una de las características más exclusivas y queridas de Rust es su agresivo compilador que te ayuda a garantizar la corrección y la seguridad incluso antes de que se ejecute el programa. Como resultado, los desarrolladores de Rust pueden escribir programas de alto rendimiento pero seguros. Rust elimina clases enteras de errores de programación, especialmente los errores en tiempo de ejecución difíciles de depurar.

Si no lo has probado, ¡pruébalo! Es mágico. Creo que Rust podría ser el próximo Java o Ruby, el lenguaje de programación que todos deben aprender en el futuro.

Sin embargo, aprender Rust generalmente requiere que instales un montón de herramientas de línea de comandos en tu computadora. El compilador de Rust es lento porque todo el paradigma de Rust está configurado para analizar profundamente el código fuente y encontrar errores en tiempo de compilación, en lugar de fallar en tiempo de ejecución.

Los IDE de Rust en línea, como Rust Playground y REPL.it, son herramientas simples que no aprovechan al máximo el ecosistema Rust de bibliotecas y objetivos de compiladores de terceros.

Así que quizás se pregunte: ¿puedo intentar aprender Rust sin tener que instalar todos esos paquetes de software en mi computadora?

Bueno, con las acciones de GitHub, ¡puedes! Puede aprender y experimentar con el código Rust directamente en su navegador web. ¡Empecemos!

GitHub Actions facilita la automatización de todos los flujos de trabajo de su software, ahora con CI / CD de clase mundial. Cree, pruebe e implemente su código directamente desde GitHub. Haga que las revisiones de código, la administración de sucursales y la clasificación de problemas funcionen de la manera que desee. El código fuente y las acciones del flujo de trabajo para el ejemplo de Hello World se pueden encontrar en este repositorio de GitHub.

Hola Mundo

Primero, cree un nuevo repositorio de GitHub y agregue un archivo fuente de Rust. Agreguemos un src/main.rsarchivo con el siguiente contenido.

fn main() { println!("Hello, world!"); }

Luego, regrese al /directorio raíz del repositorio de GitHub y agregue un Cargo.tomlarchivo. Este archivo describe cómo el sistema de carga de Rust debería construir y empaquetar nuestro proyecto.

[package] name = "hello" version = "0.1.0" authors = ["ubuntu"] edition = "2018" [dependencies]

Ahora tenemos un proyecto completo de Rust. Vamos a construirlo y ejecutarlo ahora.

Acciones de Github

En la pestaña Acciones de GitHub, podemos agregar flujos de trabajo asociados con este proyecto. Esas son acciones que Github realiza automáticamente cuando ocurren ciertos eventos, como enviar código o confirmar. En nuestro caso, nos gustaría que GitHub compile y ejecute automáticamente nuestro main.rsy nos muestre los resultados.

Las acciones del flujo de trabajo y sus activadores de eventos se definen en ymlarchivos en el .github/workflowsdirectorio. Puede escribir sus propios ymlarchivos o elegir entre una de las plantillas listas para usar.

Aquí elegimos la plantilla Rust. GitHub le permite editar el rust.ymlarchivo antes de registrarlo en el repositorio.

Tomemos un minuto aquí para explicar cómo funcionan las acciones de GitHub. El rust.ymlarchivo predeterminado dice que

  • Siempre que un usuario inserta un código o acepta solicitudes de extracción en este repositorio, rust.ymlse activarán las acciones de este flujo de trabajo.
  • El flujo de trabajo creará una máquina virtual con el último sistema operativo Ubuntu. En este sistema Ubuntu, realizará los siguientes pasos.
  • Verificará el código de la mastersucursal.
  • Ejecutará el cargo build --verbosecomando para compilar y construir el código de Rust.
  • Ejecutará el cargo test --verbosecomando para ejecutar los casos de prueba.
  • Todas las salidas estándar y de consola en el sistema Ubuntu de los dos comandos anteriores serán capturadas por Acciones de GitHub y mostradas en la web.

Puede editar la última línea rust.ymlpara realizar cargo run, que ejecuta el programa binario compilado. Nuestro rust.ymlarchivo actualizado es el siguiente.

name: Rust on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/[email protected] - name: Build run: cargo build --verbose - name: Run run: cargo run

Ahora, cada vez que envía código a este repositorio, rust.ymlse realizan las acciones en . Puede ver los resultados en la pestaña Acciones.

Puede hacer clic en un resultado y hacer clic en la pestaña de construcción a la izquierda para ver los detalles. Las secciones de construcción y ejecución proporcionan los detalles más relevantes. La sección Ejecutar muestra una impresión exitosa de ¡Hola mundo!

A continuación, puede agregar dependencias de terceros Cargo.tomly crear aplicaciones complejas de Rust en main.rs. Cada vez que alguien presione un código, podremos ver los resultados.

Desarrollo basado en pruebas (TDD)

Por supuesto, muy pocos desarrolladores ejecutan sus programas para imprimir texto en la consola. Lo cargo runanterior es solo un espectáculo. En realidad, la mayoría de los desarrolladores escriben funciones y casos de prueba para esas funciones. La tarea más frecuente después de compilar y compilar es ejecutar casos de prueba. Veamos como se hace.

Cree un nuevo repositorio de GitHub y luego agregue un src/lib.rsarchivo a continuación. Como puede ver, define una función Rust y algunos casos de prueba. Puede construirse y lanzarse como un paquete de biblioteca Rust.

pub fn say(s: &str) -> String { let r = String::from("hello "); return r + s; } #[cfg(test)] mod tests { use super::*; #[test] fn say_hello() { let result = say("ssvm"); assert!(result.contains("hello ssvm")); } }

Luego, regrese al /directorio raíz del repositorio de GitHub y agregue el siguiente Cargo.tomlarchivo.

[package] name = "hello" version = "0.1.0" authors = ["ubuntu"] edition = "2018" [lib] name = "hello_lib" path = "src/lib.rs" crate-type =["cdylib"] [dependencies]

Haga clic en la pestaña Acciones y agregue el flujo de trabajo predeterminado de Rust. Como recordará, el flujo de trabajo predeterminado de Rust termina con cargo test, que es exactamente lo que necesitamos aquí.

The workflow runs every time new code is pushed into this repository. You can click open a successful build, and see the output from the build and test actions.

What's next

Now you can experiment with your Rust code, and have GitHub build, test, and run it for you with complete console outputs, for free and without ever leaving your browser!

Resources

  • Learn to program in Rust
  • Learn more about GitHub Actions
  • Of course, the best way to run Rust programs on the server is inside a WebAssembly Virtual Machine. Checkout the open source Second State VM for that!
  • Learn about the BUIDL online IDE to code and deploy decentralized web apps on public blockchains

About the author

Dr. Michael Yuan is the author of 5 books on software engineering. His latest book Building Blockchain Apps was published by Addison-Wesley in Dec 2019. Dr. Yuan is the co-founder of Second State, a VC-funded startup that brings WebAssembly and Rust technologies to cloud, blockchain, and AI applications. It enables developers to deploy fast, safe, portable, and serverless Rust functions on Node.js.

Prior to Second State, Dr. Yuan was a long time open source contributor at Red Hat, JBoss, and Mozilla. Outside of software, Dr. Yuan is a Principal Investigator at the National Institutes of Health, with multiple research awards on cancer and public health research. He holds a PhD in astrophysics from the University of Texas at Austin.