Lexique informatique › Programmation › Règle de l'orphelin (orphan rule)

Règle de l'orphelin (orphan rule)

Programmation Svenska → Mis à jour: 2026-09-24

La règle de Rust selon laquelle on ne peut implémenter un trait pour un type que si l'un des deux au moins appartient à sa propre crate. La source d'environ la moitié des frustrations des débutants en Rust.

Le motif est la cohérence : le compilateur garantit que, pour chaque combinaison de trait et de type, il n'existe qu'une seule implémentation dans tout le programme. Sans cette règle, deux bibliothèques indépendantes pourraient implémenter le même trait de sérialisation pour Vec, et le jour où quelqu'un les utiliserait toutes les deux dans un même binaire, il n'y aurait aucune issue raisonnable — ce n'est pas un bogue que l'une ou l'autre bibliothèque puisse corriger.

Le prix à payer : on ne peut pas ajouter de comportement aux types des autres, ce qui est précisément ce qu'on voudrait faire. Le contournement classique est un type enveloppe minimal qui rend le type local, au prix des méthodes héritées. La règle est aussi plus nuancée qu'il n'y paraît : les paramètres de type comptent comme couverts dans certaines positions, et les références comme Box sont traitées comme transparentes, justement pour éviter le pire côté ergonomie.

← Retour au lexique