
Lifetimes Avançados
Higher-ranked trait bounds (HRTB), lifetime subtyping, variance (covariant, contravariant, invariant), 'static vs 'a, NLL
1O que é um Higher-Ranked Trait Bound (HRTB) em Rust?
O que é um Higher-Ranked Trait Bound (HRTB) em Rust?
Resposta
Um Higher-Ranked Trait Bound (HRTB) permite especificar que uma função ou um trait deve funcionar para todos os lifetimes possíveis, não apenas um específico. A sintaxe for<'a> indica que o trait bound deve ser satisfeito para qualquer lifetime 'a escolhido por quem chama. Esse recurso é essencial para closures e callbacks que precisam aceitar referências com lifetimes variados.
2Qual é a diferença entre fn foo<'a>(f: impl Fn(&'a str)) e fn foo(f: impl for<'a> Fn(&'a str))?
Qual é a diferença entre fn foo<'a>(f: impl Fn(&'a str)) e fn foo(f: impl for<'a> Fn(&'a str))?
Resposta
Com fn foo<'a>, o lifetime 'a é fixado por quem chama no momento da chamada e permanece o mesmo durante toda a execução. Com for<'a>, a closure deve funcionar para qualquer lifetime, permitindo chamá-la várias vezes com referências de lifetimes diferentes. Essa distinção é crucial para APIs que chamam uma closure várias vezes com diferentes referências temporárias.
3O que é lifetime subtyping em Rust e o que significa 'a: 'b?
O que é lifetime subtyping em Rust e o que significa 'a: 'b?
Resposta
O lifetime subtyping estabelece uma relação de subtyping entre lifetimes. A notação 'a: 'b significa que 'a vive pelo menos tanto quanto 'b, portanto 'a é um subtype de 'b. Uma referência com um lifetime mais longo pode ser usada onde um lifetime mais curto é esperado. Essa relação é covariant para referências imutáveis, permitindo passar uma referência com um lifetime mais longo onde um mais curto bastaria.
O que é variance em Rust e como ela afeta os tipos genéricos?
Por que &mut T é invariant em relação a T enquanto &T é covariant?
+17 perguntas de entrevista
Outros temas de entrevista Rust
Fundamentos de Rust
Ownership & Borrowing
Structs & Enums
Tratamento de erros
Coleções
Módulos e Pacotes
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macros
Serde e serialização
Unsafe Rust
Traits avançados
Type System
Tokio & Async I/O
Otimização de Desempenho
Memory Management
Web Frameworks
Database Integration
Padrões de design em Rust
Domine Rust para sua proxima entrevista
Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.
Comece gratis