Ir al contenido

Rust para desarrolladores C#/Java — Misión

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#.

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é.

  • 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, enum y match en lugar de jerarquías de clases;
  • gestionar errores con Option, Result y ? en lugar de null y 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.