Por qué en Rust no se recomienda aceptar &String, &Vec o &Box como argumentos de funciones?
¡Hola a todos! Empecé a estudiar Rust recientemente y noté algo extraño. En algunos ejemplos de código veo que las funciones aceptan parámetros como `&String`, `&Vec` o `&Box`. Parece lógico — queremos pasar una referencia para no copiar datos. Pero luego me topé con la recomendación de que no se debe hacer así. ¿Por qué? ¡Son solo referencias!
Aquí hay un ejemplo que escribí:
```rust
fn print_string(s: &String) {
println!("{}", s);
}
fn print_vec(v: &Vec) {
for i in v {
println!("{}", i);
}
}
fn main() {
let my_string = String::from("Hello");
let my_vec = vec![1, 2, 3];
print_string(&my_string);
print_vec(&my_vec);
}
```
Este código funciona, pero he oído que es mejor usar `&str` en lugar de `&String` y `&[T]` en lugar de `&Vec`. ¿Por qué? `&String` y `&Vec` ya son referencias, no poseen los datos. ¿Cuál es el truco? ¿Hay alguna diferencia en rendimiento o en otra cosa? Explíquenme, por favor, en palabras simples.
No answers yet.
Inicia sesión para dejar una respuesta
Blogs
Kotlin vs Python: ¿qué elegir para el backend en 2024?
Métodos estáticos de Java en Kotlin: rendimiento y optimización del código
Por qué &String, &Vec y &Box son de mal gusto en Rust?
Cómo obtener el último elemento de un slice en Go: guía completa con ejemplos