Es wird empfohlen, #[derive(Debug)]
für die meisten von Ihnen erstellten Strukturen zu verwenden, um das Debuggen zu unterstützen. Dies ist jedoch nicht möglich, wenn Ihre Struktur einen Typ ohne Debug
enthält, z. B. Merkmale. Aber wenn ich das Merkmal unter meiner Kontrolle habe, kann ich etwas tun, um die Implementierung dieses Merkmals durch die Benutzer in der Debug-Nachricht erscheinen zu lassen?
Ich könnte verlangen, dass Leute, die mein Merkmal implementieren, auch Debug
implementieren, aber ich möchte diese willkürliche Anforderung nicht hinzufügen:
Ich könnte einfach Debug
für mein Merkmal implementieren:
Dies erlaubt Implementierungen nicht, Debug
zu überschreiben - es ist fast so, als wäre die Funktion nicht virtuell. Wie kann ich das schaffen?
Ausgaben:
%Vor%Was ich will:
%Vor% Ich möchte nur die erste Ausgabe, wenn B
nicht Debug
implementiert.
Sie können Ihre eigene Trait-Methode erstellen. Typen, die das Debugging verbessern möchten und implementieren Debug
kann delegieren:
Eine alternative Lösung, für die die Funktion für die unstable Spezialisierung erforderlich ist:
%Vor%Beachten Sie, dass dies den Container belastet.
Tags und Links rust traits virtual-functions