4. Un clásico “hola mundo”
Creamos un proyecto
– > cargo new hola_mundo --bin
> cargo run
En Flandes se usaba Cargo…
Cargo es una herramienta, incluida con Rust,
que nos ayuda en la compilación, tests,
documentación y
la gestión de dependencias.
8. if, while, loop y for
El bucle for itera sobre
cualquier variable que
implemente un Iterador
9. Dueños y préstamos
● Todas las variables por referencia tienen un dueño
● El dueño puede transferir la propiedad de la variable o
prestar la variable a: un escritor o a infinitos lectores.
● Para transferir: nada
● Para prestar en modo lectura: &
● Para prestar en modo escritura: &mut
La semántica de movimiento puede costar de entender
al principio, pero prestar es muy interesante,
yo me hice rico prestando dinero, no te digo más
10.
11.
12. Funciones
Las funciones se definen
con fn
Toman argumentos de
varios tipos y
devuelven un
valor de otro tipo
Se puede retornar la función con return o
con una última expresión (sin punto y coma)
Las funciones soportan genericidad
13. Option y Result
Solo sé que no sé nada. No todas las funciones
tienen por qué pueden devolver un valor (Option)
o realizarse sin errores (Result)
I call it my billion
dollar mistake.
The invention of
the null in 1965
Option = Some(T) | None
Result = Ok(T) | Err(U)
14. Option y Result
Solo sé que no sé nada. No todas las funciones
tienen por qué pueden devolver un valor (Option)
o realizarse sin errores (Result)
I call it my billion
dollar mistake.
The invention of
the null in 1965
Option = Some(T) | None
Result = Ok(T) | Err(U)
15. Leer archivos
BufReader mejora el rendimiento y trae más métodos
que usar File directamente. ¿Desea que me vaya?
● Sí
● Ya estás tardando
16. Struct, impl, trait
● Rust no está orientado a objetos en el sentido estricto
del término
● Existen struct (solo datos) que pueden tener funciones
asociadas
● A su vez, estas struct pueden implementar traits
(similar a interfaces de otros lenguajes)
● No hay herencia, no hay constructores reales
17. Struct, impl
Rust es un lenguaje con clase,
aunque no tenga clases
Se puede usar pub
para marcar un método
como público.
Existe azúcar sintáctico
para diferenciar métodos
estáticos y de instancia
19. lambda
Las funciones lambda se definen
con barras, y se pueden asignar
a una variable
Las funciones lambda son muy útiles
para operar con iteradores:
map, filter, reduce, take_while,...
20. Threads
En nuestra especie superior podemos
Hacer varias cosas a la vez. Usar Rust
para la concurrencia y el paralelismo es
lo más cercanos que estáis los humanos
de pareceros a nosotros
Para compartir información
entre hilos se puede usar
Arc y Mutex o el sistema
de envío de mensajes.
21. Macros
Las macros se indican con una
exclamación. No son funciones como tal.
Forman parte de la metaprogramación.
Pero son una súper pasada
Macros de interés
println!
print!
format!
vec!
try!
assert!
include_bytes!
Panic!
23. BONUS: Fractal de Koch
Descubierto por Hegel van Koch
se basa en una estructura muy simple
que se aplica de forma recursiva.
¿Qué hay más navideño que el
turrón, las uvas, mi discurso
y los fractales de Koch?
https://github.com/aarroyoc/fractal_koch_rust