# Lifetimes Avancés (Rust) > Higher-ranked trait bounds (HRTB), lifetime subtyping, variance (covariant, contravariant, invariant), 'static vs 'a, NLL - 20 questions d'entretien - Senior - [Questions d'entretien: Rust](https://sharpskill.dev/fr/technologies/rust/questions-entretien.md) ## 1. Qu'est-ce qu'un Higher-Ranked Trait Bound (HRTB) en Rust ? **Réponse** Un Higher-Ranked Trait Bound (HRTB) permet de spécifier qu'une fonction ou un trait doit fonctionner pour tous les lifetimes possibles, pas seulement un lifetime spécifique. La syntaxe for<'a> indique que le bound doit être satisfait pour n'importe quel lifetime 'a choisi par l'appelant. Cette fonctionnalité est essentielle pour les closures et les callbacks qui doivent accepter des références avec des lifetimes variés. ## 2. Quelle est la différence entre fn foo<'a>(f: impl Fn(&'a str)) et fn foo(f: impl for<'a> Fn(&'a str)) ? **Réponse** Avec fn foo<'a>, le lifetime 'a est fixé par l'appelant au moment de l'appel et reste le même pour toute la durée de l'exécution. Avec for<'a>, la closure doit fonctionner pour n'importe quel lifetime, permettant de l'appeler plusieurs fois avec des références de lifetimes différents. Cette distinction est cruciale pour les APIs qui appellent une closure plusieurs fois avec des références temporaires différentes. ## 3. Qu'est-ce que le lifetime subtyping en Rust et que signifie 'a: 'b ? **Réponse** Le lifetime subtyping établit une relation de sous-typage entre lifetimes. La notation 'a: 'b signifie que 'a vit au moins aussi longtemps que 'b, donc 'a est un sous-type de 'b. Une référence avec un lifetime plus long peut être utilisée là où un lifetime plus court est attendu. Cette relation est covariant pour les références immutables, permettant de passer une référence avec un lifetime plus long là où un plus court suffirait. ## 17 questions supplémentaires disponibles - Qu'est-ce que la variance en Rust et comment affecte-t-elle les types génériques ? - Pourquoi &mut T est-il invariant par rapport à T alors que &T est covariant ? S'inscrire gratuitement: https://sharpskill.dev/fr/login ## Autres sujets d'entretien Rust - [Les bases de Rust](https://sharpskill.dev/fr/technologies/rust/questions-entretien/rust-basics.md): 25 questions, Junior - [Ownership & Borrowing](https://sharpskill.dev/fr/technologies/rust/questions-entretien/ownership-borrowing.md): 22 questions, Junior - [Structs & Enums](https://sharpskill.dev/fr/technologies/rust/questions-entretien/structs-enums.md): 20 questions, Junior - [Gestion des erreurs](https://sharpskill.dev/fr/technologies/rust/questions-entretien/error-handling.md): 18 questions, Junior - [Collections](https://sharpskill.dev/fr/technologies/rust/questions-entretien/collections.md): 20 questions, Junior - [Modules & Packages](https://sharpskill.dev/fr/technologies/rust/questions-entretien/modules-packages.md): 18 questions, Junior - [Traits](https://sharpskill.dev/fr/technologies/rust/questions-entretien/traits.md): 22 questions, Confirmé - [Generics](https://sharpskill.dev/fr/technologies/rust/questions-entretien/generics.md): 20 questions, Confirmé - [Lifetimes](https://sharpskill.dev/fr/technologies/rust/questions-entretien/lifetimes.md): 20 questions, Confirmé - [Iterators & Closures](https://sharpskill.dev/fr/technologies/rust/questions-entretien/iterators-closures.md): 22 questions, Confirmé - [Smart Pointers](https://sharpskill.dev/fr/technologies/rust/questions-entretien/smart-pointers.md): 22 questions, Confirmé - [Concurrency Basics](https://sharpskill.dev/fr/technologies/rust/questions-entretien/concurrency-basics.md): 20 questions, Confirmé - [async/await](https://sharpskill.dev/fr/technologies/rust/questions-entretien/async-await.md): 22 questions, Confirmé - [Testing](https://sharpskill.dev/fr/technologies/rust/questions-entretien/testing.md): 18 questions, Confirmé - [Cargo & Ecosystem](https://sharpskill.dev/fr/technologies/rust/questions-entretien/cargo-ecosystem.md): 18 questions, Confirmé - [Pattern Matching](https://sharpskill.dev/fr/technologies/rust/questions-entretien/pattern-matching.md): 18 questions, Confirmé - [Macros](https://sharpskill.dev/fr/technologies/rust/questions-entretien/macros.md): 20 questions, Confirmé - [Serde & Serialization](https://sharpskill.dev/fr/technologies/rust/questions-entretien/serde-serialization.md): 20 questions, Confirmé - [Unsafe Rust](https://sharpskill.dev/fr/technologies/rust/questions-entretien/unsafe-rust.md): 20 questions, Senior - [Traits Avancés](https://sharpskill.dev/fr/technologies/rust/questions-entretien/advanced-traits.md): 22 questions, Senior - [Type System](https://sharpskill.dev/fr/technologies/rust/questions-entretien/type-system.md): 20 questions, Senior - [Tokio & Async I/O](https://sharpskill.dev/fr/technologies/rust/questions-entretien/tokio-async.md): 22 questions, Senior - [Optimisation de Performance](https://sharpskill.dev/fr/technologies/rust/questions-entretien/performance-optimization.md): 20 questions, Senior - [Memory Management](https://sharpskill.dev/fr/technologies/rust/questions-entretien/memory-management.md): 20 questions, Senior - [Web Frameworks](https://sharpskill.dev/fr/technologies/rust/questions-entretien/web-frameworks.md): 22 questions, Senior - [Database Integration](https://sharpskill.dev/fr/technologies/rust/questions-entretien/database-integration.md): 20 questions, Senior - [Design Patterns Rust](https://sharpskill.dev/fr/technologies/rust/questions-entretien/design-patterns.md): 20 questions, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/fr/technologies/rust/questions-entretien/advanced-lifetimes