Wie man Attribute wie `#[derive]` in Rust bedingt einfügt?
Hallo zusammen! Ich lerne Rust und bin auf eine Situation gestoßen, in der ich möchte, dass eine Struktur das `Debug`-Trait nur im Debug-Modus (debug build) automatisch implementiert, aber nicht im Release-Build. Ich kenne `#[cfg(debug_assertions)]`, mit dem man Codeblöcke bedingt kompilieren kann. Aber wie wendet man das auf Attribute an, insbesondere auf `#[derive]`?
Hier ist ein Beispiel, das nicht funktioniert:
```rust
#[cfg(debug_assertions)]
#[derive(Debug)]
struct MyStruct {
value: i32,
}
```
Der Compiler beschwert sich, dass das `derive`-Attribut nicht bedingt sein kann. Ich habe verschiedene Varianten ausprobiert: `cfg` nach `derive` setzen, verschachtelte Attribute verwenden – nichts hilft.
Ich habe ähnliche Diskussionen in englischsprachigen Foren gefunden, aber sie sind alt (2016–2018). Vielleicht hat sich seitdem etwas geändert? Oder gibt es einen Workaround? Die konkrete Aufgabe: Im Debug-Modus möchte ich `{:?}` für die Struktur sehen, aber im Release-Modus möchte ich nicht für zusätzlichen Code bezahlen. Könnt ihr mir sagen, wie man das in modernem Rust (Edition 2021) richtig macht?
Vielen Dank im Voraus!
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen