Carregando
0xB0Lição 12 de 17

Lifetimes e raciocínio do borrow checker

Entenda lifetimes de referências e quando anotações são necessárias.

18 min Questionário com 5 perguntas 1 exercício de código
Ao final desta lição, você saberá
  • 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.

main.rs
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}
Saída
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 XP

Acompanhe uma referência emprestada com segurança

Rastreie como uma referência de string permanece válida durante uma chamada de função.

Mensagem 1 de 3Previsões 0/0
Input references
longest function
borrow checker

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.

Exercício 1

Retorne a maior palavra emprestada

+25 XP

Complete pick_longer para retornar a maior entre duas strings emprestadas e imprima o resultado.

  • Primeira maior
  • Segunda maior
main.rs
Carregando editor…

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…