Avatar ·

Como implementar um trait para um tipo de um crate externo se não posso alterar nem o trait nem o tipo?

Olá a todos! Sou novo em Rust e me deparei com um problema que não consigo resolver há várias horas. Tenho um crate externo `external_crate` que define o trait `Transformer` e a struct `Data`. Não posso alterar o código desse crate. Parece mais ou menos assim: ```rust // external_crate pub trait Transformer { fn transform(&self) -> String; } pub struct Data { pub value: i32, } ``` Quero implementar `Transformer` para `Data` para usar isso no meu projeto. Escrevo: ```rust use external_crate::{Data, Transformer}; impl Transformer for Data { fn transform(&self) -> String { format!("Value: {}", self.value) } } ``` Mas o compilador dá o erro: ``` error[E0117]: only traits defined in the current crate can be implemented for arbitrary types ``` Entendo que isso tem a ver com a regra orphan rule, mas não consigo descobrir como contornar essa limitação corretamente. O que devo fazer? Preciso criar um wrapper? Ou existe