Avatar ·

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...