Rust

Lifetimes Avancés

Higher-ranked trait bounds (HRTB), lifetime subtyping, variance (covariant, contravariant, invariant), 'static vs 'a, NLL

20 questions d'entretien·
Senior
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.

4

Qu'est-ce que la variance en Rust et comment affecte-t-elle les types génériques ?

5

Pourquoi &mut T est-il invariant par rapport à T alors que &T est covariant ?

+17 questions d'entretien

Maîtrise Rust pour ton prochain entretien

Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.

Commencer gratuitement