Este proyecto contiene ejemplos educativos avanzados de Rust que no se enseñan normalmente en tutoriales básicos.
platzi_course/
│
├── Cargo.toml ← Configuración del proyecto
│ (dice dónde están los binarios, dependencias y nombres)
│
├── README.md ← Este archivo
│
├── .gitignore ← Archivos ignorados por Git
│
├── src/ ← CÓDIGO FUENTE (lo que escribes)
│ │
│ ├── main.rs ← Binario principal (por defecto)
│ │ (cargo run ejecuta este)
│ │
│ ├── lib.rs ← Librería (código reutilizable)
│ │ (otros proyectos pueden usar esto)
│ │
│ ├── bin/ ← MÚLTIPLES BINARIOS (programas ejecutables)
│ │ │ Convención especial de Cargo
│ │ ├── comparaciones.rs → cargo run --bin comparaciones
│ │ ├── tipos_enteros.rs → cargo run --bin tipos_enteros
│ │ ├── tipos_enteros2.rs → cargo run --bin tipos_enteros2
│ │ ├── features_avanzadas.rs → cargo run --bin features_avanzadas
│ │ └── modulos_demo.rs → cargo run --bin modulos_demo
│ │
│ └── modulos/ ← TUS MÓDULOS PERSONALES (organización)
│ ├── mod.rs ← Punto de entrada del módulo
│ ├── matematicas.rs
│ ├── strings.rs
│ └── estructuras.rs
│
└── target/ ← ARCHIVOS COMPILADOS (generados automáticamente)
└── debug/
├── main.exe ← main.rs compilado
├── comparaciones.exe ← comparaciones.rs compilado
├── tipos_enteros.exe ← tipos_enteros.rs compilado
├── tipos_enteros2.exe ← tipos_enteros2.rs compilado
├── features_avanzadas.exe ← features_avanzadas.rs compilado
└── modulos_demo.exe ← modulos_demo.rs compilado
cargo run
# o específicamente:
cargo run --bin main# Comparaciones Rust vs Python vs C++
cargo run --bin comparaciones
# Guía completa de tipos de enteros (versión original)
cargo run --bin tipos_enteros
# Guía de tipos de enteros (versión mejorada con explicaciones)
cargo run --bin tipos_enteros2
# Features avanzadas (lifetimes, traits, macros, etc.)
cargo run --bin features_avanzadas
# Demostración de módulos y subcarpetas
cargo run --bin modulos_demo- Un proyecto puede tener múltiples programas ejecutables
- Cada binario es independiente
- Útil para crear herramientas CLI múltiples en un solo proyecto
mod.rses el punto de entrada (similar a__init__.pyen Python)- Organización de código en módulos
- Re-exportación de funciones (
pub use)
lib.rsconvierte el proyecto en una librería- Puedes tener AMBOS: librería y binarios
- Otros proyectos pueden usar tu código como dependencia
- Python: Garbage Collector, duck typing, list comprehensions
- C++: Templates, smart pointers, manual memory management
- Rust: Ownership, lifetimes, zero-cost abstractions
- Lifetimes: Garantías de validez de referencias
- Traits: Similar a interfaces en C++, protocols en Python
- Macros: Más poderosas que en C++
- Closures: Lambdas con captura de entorno
- Iterators: Lazy evaluation
- Smart Pointers: Rc, Arc (similar a shared_ptr en C++)
Suprime warnings de código no usado. Útil durante desarrollo.
Permite reorganizar tu API pública sin romper código externo.
mod.rs: Punto de entrada de un módulo en subcarpeta- Archivo directo:
mod nombre;buscanombre.rsonombre/mod.rs
Cada [[bin]] en Cargo.toml puede tener su propio main().
2015: Rust original2018: Mejoras importantes2021: Actual (recomendado)
| Concepto | Python | Rust |
|---|---|---|
| Memoria | GC automático | Ownership system |
| Tipos | Dinámicos | Estáticos (inferencia) |
| Null | None |
Option<T> |
| Errores | Excepciones | Result<T, E> |
| Strings | Inmutables | &str (slice) vs String (owned) |
| Concepto | C++ | Rust |
|---|---|---|
| Memoria | Manual/smart pointers | Ownership (automático) |
| Templates | Compile-time | Generics (más seguro) |
| Null | nullptr |
Option<T> |
| Errores | Excepciones/códigos | Result<T, E> |
| Unsafe | Todo puede ser unsafe | Solo bloques explícitos |
- The Rust Book
- Rust by Example
- Rustlings - Ejercicios interactivos
- Experimenta modificando los ejemplos
- Crea tus propios módulos
- Prueba agregar dependencias externas
- Explora
cargo doc --openpara documentación generada