Rust de los fundamentos al dominio — Lección 3
Conectando propiedad, préstamos y porciones con código
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.
La propiedad en Rust es una regla que determina en el momento de la compilación quién limpia la memoria. Indique en el tipo de función si el valor será movido, de solo lectura o mutable.
mover valor
fn print_name(name: String) {
println!("{name}");
}
let player_name = String::from("Rose");
print_name(player_name);
//player_name no se puede volver a utilizar aquí.
String posee datos del montón, por lo que la propiedad se mueve al asignar o pasar valores. Para mantener válido el original, debe copiarlo o hacer referencia a él explícitamente.
Referencias inmutables y mutables
fn print_name(name: &str) {
println!("{name}");
}
fn add_suffix(name: &mut String) {
name.push_str("_01");
}
let mut player_name = String::from("Rose");
print_name(&player_name);
add_suffix(&mut player_name);
Se toma prestado &str brevemente para leer el contenido de la cadena y se toma prestado &mut String para cambiar el valor. No puede utilizar una referencia mutable y otra referencia en el mismo ámbito al mismo tiempo.
Esta restricción evita situaciones en las que los valores cambian mientras se leen o se modifican en dos lugares simultáneamente.
rebanado
fn first_word(text: &str) -> &str {
match text.find(' ') {
Some(index) => &text[..index],
None => text,
}
}
Un segmento es una referencia a una porción contigua de una cadena o matriz sin poseerla. Las funciones que no requieren la cadena completa pueden usar tanto literales de cadena como segmentos de cadena al recibir &str.
Vida útil de una referencia
El compilador garantiza que la referencia no sobreviva al original. Si intenta devolver una referencia a una variable local fuera de una función, no se compilará porque el original desaparece primero.
Cuando encuentre un error de propiedad, primero debe decidir quién debe ser el propietario real del valor en lugar de simplemente clonarlo primero. El préstamo es una técnica para evitar la copia y al mismo tiempo un contrato que limita los derechos de acceso a la escritura.