Avatar ·

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!