Rust de los fundamentos al dominio — Lección 1
Manejar de forma segura la memoria con propiedad y préstamo
Los artículos escritos en este blog fueron creados con el objetivo de enseñar. Además, la información del artículo puede ser incorrecta, así que tenga cuidado.
Rust es un lenguaje de programación de sistemas que tiene como objetivo mantener la seguridad de la memoria sin un recolector de basura. Al crear programas donde el rendimiento es importante, intentamos reducir los punteros no válidos y las carreras de datos en la etapa de compilación.
Los valores tienen dueños
Los valores en Rust tienen un propietario por defecto. Los valores se limpian automáticamente cuando el propietario sale del alcance.
fn main() {
let name = String::from("Rose");
print_name(name);
//La propiedad del nombre se ha trasladado a la función.
}
fn print_name(value: String) {
println!("{value}");
}
StringSi lo pasa como valor a una función, la propiedad se mueve. Si la parte que llama quiere seguir usándolo, presta el valor.
Tomar prestado un valor por referencia
fn main() {
let name = String::from("Rose");
print_name(&name);
println!("{name}");
}
fn print_name(value: &String) {
println!("{value}");
}
&StringEs una referencia que no posee valor y se lee brevemente. Para cambiar el valor&mut StringDeberías usar una referencia mutable como esta:
Las reglas que le impiden crear múltiples referencias mutables al mismo tiempo son complicadas al principio. En cambio, evita el acceso incorrecto a la memoria y las condiciones de carrera que pueden ocurrir durante la ejecución.
Expresar la posibilidad de fracaso como un tipo.
Rust suele usar Option<T> cuando un valor puede estar ausente y Result<T, E> cuando una operación puede fallar.
fn divide(a: i32, b: i32) -> Result<i32, String> {
if b == 0 {
return Err(String::from("No se puede dividir por 0."));
}
Ok(a / b)
}
El código de llamada debe manejar explícitamente el éxito y el fracaso. La seguridad en Rust también incluye cometer errores difíciles de ignorar.
El proyecto Rust escargo new, cargo run, cargo testSe gestiona con el mismo comando Cargo. Al principio, en lugar de intentar memorizar todas las reglas de propiedad, es mejor crear un pequeño programa de línea de comandos y seguir los mensajes del compilador para comprobar el alcance del préstamo.