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 ?
No answers yet.
Connectez-vous pour laisser une réponse