Avatar ·

Qual é a diferença entre String e str em Rust?

Olá! Acabei de começar a aprender Rust e me deparei com uma confusão entre `String` e `str`. Em outras linguagens, como Python ou JavaScript, strings são apenas strings, mas aqui é uma verdadeira coleção. Eu escrevi este código: ```rust fn main() { let greeting = "Hello"; // Isto é str? let name = String::from("World"); // E isto é String? println!("{} {}", greeting, name); // Tentei modificar greeting // greeting.push_str("!"); // Erro! // Mas name pode ser modificado name.push_str("!"); // Funciona println!("{}", name); } ``` Eu entendo que `String` pode ser modificada, mas `str` não. Mas por quê? Quando usar cada tipo? E o que é `&str`? Eu vi que em funções frequentemente escrevem `&str`, mas não entendo por quê. Também notei que `str` não tem tamanho conhecido em tempo de compilação, enquanto `String` tem. Isso está relacionado ao fato de as strings serem armazenadas no heap? Ajude-me a entender, pois já estou ficando confuso. <<>>

Diferença chave: propriet