Lifetimes e raciocínio do borrow checker
Entenda lifetimes de referências e quando anotações são necessárias.
- Usar anotações de lifetime em uma função que retorna referência emprestada.
Lifetimes descrevem por quanto tempo referências são válidas. O borrow checker garante que referências nunca sobrevivam aos dados apontados. Muitos lifetimes são inferidos, mas assinaturas que retornam borrows de múltiplas entradas podem exigir parâmetros explícitos.
1fn longest<'a>(left: &'a str, right: &'a str) -> &'a str {
2 if left.len() >= right.len() { left } else { right }
3}
4
5fn main() {
6 let a = String::from("rust");
7 let b = String::from("safe");
8 println!("{}", longest(&a, &b));
9}rust
Anotações de lifetime não mudam o comportamento em runtime. Elas são relações em tempo de compilação que explicam de qual referência de entrada a saída depende.
Experimente
Até 15 XPAcompanhe uma referência emprestada com segurança
Rastreie como uma referência de string permanece válida durante uma chamada de função.
Principais conclusões
Lifetimes são verificados em compilação.
Referências de saída precisam estar ligadas a dados válidos de entrada.
Borrow checker previne referências pendentes.
Quiz da aula
5 perguntas · aprovação com 4 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Pratique: escreva código em Rust
Estes exercícios rodam de verdade. Escreva o programa, clique em “Executar testes” e leia o que o compilador informa: aprender a ler as mensagens do compilador é metade do aprendizado de Rust.
Retorne a maior palavra emprestada
Complete pick_longer para retornar a maior entre duas strings emprestadas e imprima o resultado.
- Primeira maior
- Segunda maior
As aulas de Rust foram escritas para o Rust estável moderno; os exercícios rodam no Rust 1.82 pelo Wandbox, um serviço público gratuito. Seu código-fonte e a entrada de teste são enviados a esse serviço.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…