Avatar ·

Como corrigir o erro "use of moved value" em Rust?

Olá! Comecei a estudar Rust e constantemente encontro o erro "use of moved value". Aqui está um exemplo simples que o causa:\n\n```rust\nfn main() {\n let s = String::from("olá");\n let t = s;\n println!("{}", s); // erro: use of moved value: `s`\n}\n```\n\nEu entendo que o Rust controla rigorosamente a ownership, mas não consigo entender como passar dados corretamente entre variáveis e funções. Por exemplo, quero escrever uma função que recebe uma string, faz algo com ela, e depois quero usar essa string novamente no main:\n\n```rust\nfn process(s: String) -> String {\n // algum processamento\n s\n}\n\nfn main() {\n let my_string = String::from("teste");\n let result = process(my_string);\n println!("{}", my_string); // erro novamente!\n}\n```\n\nPor que isso acontece?