Wie implementiere ich ein Trait für einen Typ aus einer externen Crate, wenn ich weder das Trait noch den Typ ändern kann?
Hallo zusammen! Ich bin neu in Rust und habe ein Problem, das ich seit Stunden nicht lösen kann.
Ich habe eine externe Crate `external_crate`, die ein Trait `Transformer` und eine Struktur `Data` definiert. Ich kann den Code dieser Crate nicht ändern. Es sieht ungefähr so aus:
```rust
// external_crate
pub trait Transformer {
fn transform(&self) -> String;
}
pub struct Data {
pub value: i32,
}
```
Ich möchte `Transformer` für `Data` implementieren, um es in meinem Projekt zu verwenden. Ich schreibe:
```rust
use external_crate::{Data, Transformer};
impl Transformer for Data {
fn transform(&self) -> String {
format!("Value: {}", self.value)
}
}
```
Aber der Compiler gibt einen Fehler aus:
```
error[E0117]: only traits defined in the current crate can be implemented for arbitrary types
```
Ich verstehe, dass dies etwas mit der orphan rule zu tun hat, aber ich kann nicht herausfinden, wie ich diese Einschränkung richtig umgehen kann. Was soll ich tun? Muss ich einen Wrapper erstellen? Oder gibt es...