• [^] # Re: Premières impressions

    Posté par (site web personnel) . En réponse à la dépêche Rust 1.0, entrée dans la période stable. Évalué à 5.

    Ce qui permet, notamment, si moi je définis un nouveau trait, et qu’il se trouve qu’un type de la lib standard/xyz respecte l’ensemble des propriétés de ce trait (et donc, est substituable au sens du LSP), que je l’utilise partout où j’ai déclaré que j’utilisais un type implémentant mon trait, même s’il ne déclare pas l’implémenter explicitement (je ne peux pas modifier la lib standard ou la lib xyz pour y rajouter mon trait).

    À moins que je n'ai pas compris ce que tu voulais dire, tu te trompes. Dans ce très bon lien sur les traits (que j'avais déjà donné plus haut) on peut lire :

    Unlike interfaces in languages like Java, C# or Scala, new traits can be implemented for existing types (as with Hash above). That means abstractions can be created after-the-fact, and applied to existing libraries.

    Il faut certes déclarer explicitement que le type existant implémente bien ton propre Trait, mais il n y a pas besoin de modifier la bibliothèque standard pour ça, tu le fais dans ton propre code.