Propiedad y préstamos
15 pasos en 6 series de Rust.
El tour donde Rust deja de ser familiar. Primero la semántica de movimiento, luego los préstamos, y después los slices y los tipos de cadena que existen precisamente porque los préstamos existen. Structs y métodos, y al final los punteros inteligentes para cuando un dueño único es de verdad el modelo equivocado.
Quince pasos que a todo el mundo le cuestan más de lo que el número sugiere. El borrow checker no se pone difícil por gusto, y el momento en que eso hace clic es el momento en que Rust empieza a pagarte de vuelta.
Movimiento y clonación
- Propiedad y moveLa propiedad (ownership): cada valor tiene un solo dueño, y pasarlo lo mueve.
- Clone y CopyLos tipos Copy se duplican en silencio; todo lo demás se mueve salvo que pidas un clone.
- Propiedad entre funcionesUna función puede tomar la propiedad, prestar, o devolver la propiedad al salir.
Préstamos
- PréstamosLas referencias te dejan usar un valor sin ser su dueño.
- Préstamos mutablesUn préstamo mutable a la vez, y nunca junto a uno compartido.
- iter, iter_mut, into_iterTres maneras de recorrer una colección: por referencia, por referencia mutable, por valor.
Slices y cadenas
- SlicesPrestar una parte contigua de una cadena o un arreglo.
- Invertir una cadenaInvierte por chars, porque un String de Rust es UTF-8 y los bytes no son caracteres.
- String y &strEl String dueño de sus datos frente al &str prestado.
- Tomar &str, devolver StringLa convención de API: presta lo más barato que funcione, sé dueño de lo que devuelves.
Structs y métodos
- Métodos e implAdjuntar comportamiento a un struct con un bloque impl.
- Struct con implUn struct y su bloque impl, que es donde Rust pone los métodos.
Punteros inteligentes
- Box y tipos recursivosAsignación en el heap que le da tamaño conocido a un enum recursivo.
- Rc: propiedad compartidaConteo de referencias para que un valor tenga varios dueños.
Bis
- rpn.rsEvalúa una expresión en notación polaca inversa con una pila Vec.