Rust para desarrolladores C#/Java — Misión
Por qué aprendo esto
Sección titulada «Por qué aprendo esto»Escribo C# (y leo mucho Java), y una parte creciente de mi ecosistema — IX, hari — está escrita en Rust. Quiero leer y modificar ese código con seguridad en lugar de adivinar, y entender por qué el compilador rechaza lo que sería perfectamente válido en C#.
Para quién es este curso
Sección titulada «Para quién es este curso»Te manejas con soltura en C# o Java: clases, interfaces, genéricos, excepciones, colecciones, LINQ o Streams, async/await o CompletableFuture.
Nunca has escrito Rust. Cada lección parte del concepto que ya conoces y muestra en qué coincide Rust, en qué difiere y por qué.
Al final de este curso, sabré
Sección titulada «Al final de este curso, sabré»- crear un proyecto Rust con Cargo y orientarme en sus herramientas;
- explicar el ownership (propiedad), el borrowing (préstamo) y los tiempos de vida (lifetimes) a partir de lo que un recolector de basura hace normalmente por mí;
- modelar datos con
struct,enumymatchen lugar de jerarquías de clases; - gestionar errores con
Option,Resulty?en lugar denully excepciones; - usar traits, genéricos e iteradores como uso interfaces, genéricos y LINQ/Streams;
- escribir código concurrente y asíncrono seguro;
- probar, documentar y analizar (lint) un crate.
| # | Lección | Ya conoces |
|---|---|---|
| 1 | Cadena de herramientas y Cargo | CLI dotnet, NuGet, Maven/Gradle |
| 2 | Tipos, mutabilidad y expresiones | var, final/readonly, int/long, ternarios |
| 3 | Ownership y movimientos | el recolector de basura, IDisposable, try-with-resources |
| 4 | Préstamos y cadenas | referencias, string/String, StringBuilder |
| 5 | Structs, enums y pattern matching | clases, records, jerarquías selladas, switch |
| 6 | Option, Result y ? |
null, excepciones |
| 7 | Traits y genéricos | interfaces, genéricos |
| 8 | Colecciones e iteradores | LINQ, Streams |
| 9 | Tiempos de vida (lifetimes) | — |
| 10 | Módulos, crates y workspaces | namespaces/paquetes, proyectos, soluciones |
| 11 | Box, Rc, Arc, RefCell |
referencias, objetos compartidos |
| 12 | Hilos, Send/Sync, Mutex, rayon |
Thread, lock/synchronized, Parallel.For |
| 13 | async y tokio |
async/await, CompletableFuture |
| 14 | Tests, docs, clippy, fmt | xUnit/JUnit, documentación XML/Javadoc, analizadores |
| 15 | Macros, unsafe y FFI (panorama) |
generadores de código fuente, P/Invoke, JNI |
Un curso de continuación, Rust en la práctica: IX y compañía, aplica cada una de estas ideas a código real de IX, hari y mis otros repositorios Rust.
Diario — lo que probé, lo que me sorprendió, lo que aún me queda por verificar.
Recursos
Sección titulada «Recursos»- The Rust Programming Language («el Book») — la introducción oficial y gratuita.
- Rust by Example — ejemplos breves y ejecutables.
- The Cargo Book — herramienta de compilación y gestor de paquetes.
- Documentación de la biblioteca estándar de Rust.
- Rust Error Codes Index — cada
E0xxxexplicado, también disponible sin conexión conrustc --explain E0382.