Avatar ·

La forma correcta de devolver una nueva cadena de una función en Rust

¡Hola! Soy nuevo en Rust y estoy tratando de entender cómo devolver cadenas desde funciones. En otros lenguajes simplemente creaba una cadena y la devolvía, pero en Rust es más complicado debido al sistema de ownership. Tengo una función que debe tomar una cadena, agregarle un prefijo y devolver una nueva cadena. Aquí está mi código que no funciona: ```rust fn add_prefix(s: &str) -> &str { let result = String::from("prefix_") + s; &result } ``` El compilador da un error: `cannot return reference to local variable 'result'`. Entiendo que `result` se elimina después de salir de la función, pero ¿cómo devolver correctamente una nueva cadena? He probado diferentes opciones: 1. Devolver `String` en lugar de `&str` — pero entonces en el código llamador necesito tomar prestada la cadena de nuevo. 2. Usar `to_string()` — pero parece redundante. 3. Intenté devolver `&'static str` — pero no es adecuado para cadenas dinámicas. Indíquenme qué enfoque se considera idiomático en Rust para devolver nuevas cadenas desde funciones. Quiero entender.