Avatar ·

Comment implémenter un trait pour un type d'une crate externe si je ne peux modifier ni le trait ni le type ?

Bonjour à tous ! Je suis débutant en Rust et je suis confronté à un problème que je n'arrive pas à résoudre depuis plusieurs heures. J'ai une crate externe `external_crate` qui définit le trait `Transformer` et la structure `Data`. Je ne peux pas modifier le code de cette crate. Cela ressemble à ceci : ```rust // external_crate pub trait Transformer { fn transform(&self) -> String; } pub struct Data { pub value: i32, } ``` Je veux implémenter `Transformer` pour `Data` afin de l'utiliser dans mon projet. J'écris : ```rust use external_crate::{Data, Transformer}; impl Transformer for Data { fn transform(&self) -> String { format!("Value: {}", self.value) } } ``` Mais le compilateur renvoie une erreur : ``` error[E0117]: only traits defined in the current crate can be implemented for arbitrary types ``` Je comprends que cela est lié à la règle orphan rule, mais je n'arrive pas à comprendre comment contourner cette limitation. Que dois-je faire ? Dois-je créer un wrapper ? Ou existe-t-il une autre solution ?