Cómo implementar un trait para un tipo de un crate externo si no puedo modificar ni el trait ni el tipo
¡Hola a todos! Soy nuevo en Rust y me encontré con un problema que no he podido resolver durante varias horas.
Tengo un crate externo `external_crate` que define el trait `Transformer` y la estructura `Data`. No puedo modificar el código de este crate. Se ve más o menos así:
```rust
// external_crate
pub trait Transformer {
fn transform(&self) -> String;
}
pub struct Data {
pub value: i32,
}
```
Quiero implementar `Transformer` para `Data` para usarlo en mi proyecto. Escribo:
```rust
use external_crate::{Data, Transformer};
impl Transformer for Data {
fn transform(&self) -> String {
format!("Value: {}", self.value)
}
}
```
Pero el compilador da un error:
```
error[E0117]: only traits defined in the current crate can be implemented for arbitrary types
```
Entiendo que esto tiene que ver con la regla orphan rule, pero no logro entender cómo sortear esta limitación correctamente. ¿Qué debo hacer? ¿Necesito crear un wrapper? ¿O hay...