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...
No answers yet.
Inicia sesión para dejar una respuesta