A maneira correta de retornar uma nova string de uma função em Rust
Olá! Sou novo em Rust e estou tentando entender como retornar strings de funções. Em outras linguagens, eu simplesmente criava uma string e a retornava, mas em Rust é mais complicado por causa do sistema de ownership.
Tenho uma função que deve receber uma string, adicionar um prefixo a ela e retornar uma nova string. Aqui está meu código, que não funciona:
```rust
fn add_prefix(s: &str) -> &str {
let result = String::from("prefix_") + s;
&result
}
```
O compilador dá o erro: `cannot return reference to local variable 'result'`. Entendo que `result` é deletado após sair da função, mas como então retornar corretamente uma nova string?
Tentei diferentes abordagens:
1. Retornar `String` em vez de `&str` — mas então no código chamador preciso pegar emprestado a string novamente.
2. Usar `to_string()` — mas parece redundante.
3. Tentei retornar `&'static str` — mas isso não funciona para strings dinâmicas.
Diga-me, qual abordagem é considerada idiomática em Rust para retornar novas strings de funções? Quero entender.