Ich habe Schwierigkeiten, einen Fehler in meinem Dokumentationsbeispiel für meine Bibliothek zu beheben. Ich habe die Dateistruktur wie für meine Kiste bignum
In meinen Beispielen sehen meine Header etwa wie
aus %Vor% Das kompiliert und funktioniert gut, aber jetzt, wenn ich ein Beispiel in meine Dokumentation unter lib.rs
schreibe, kann ich nicht scheinen bignum::inits::Zero
Wenn ich cargo test
starte, erhalte ich diesen Fehler
Ich habe diese Frage gesehen, aber das beschäftigt sich damit Importieren von Modulen aus derselben Datei, die noch einen Toplevel-Bereich benötigen. Aber hier definiere ich noch den Top-Level-Bereich mit bignum::
.
Während also der Import von bignum::inits::Zero
für alle meine Tests und Beispiele funktioniert, funktioniert es nicht für meine Dokumente. Warum das? Ich habe versucht, self::
anzufügen und den gleichen Fehler zu erhalten. Wenn ich die Doc-Beispiele zu
es kompiliert aber gut. Wie kann ich meine Module korrekt importieren?
Ich denke, das Problem rührt von dieser nützlichen Funktion der doc-Tests :
rustdoc fügt automatisch einen
main()
-Wrapper um Ihren Code herum und an der richtigen Stelle ein.
Wenn Sie die Regeln in der Verknüpfung anwenden, wird der Code wie folgt kompiliert:
%Vor% Sie müssten dann tatsächlich auf self::bignum
verweisen, wie die erste Fehlermeldung suggeriert. Leider funktioniert das momentan nicht wegen Rust-Problem 23314 .
Der Grund, dass dieser Fehler generiert wird, läuft daher auf extern crate bignum
hinaus, das implizit von den Dokumentationsbeispielen verwendet wird, was bedeutet, dass ich das Beispiel, dass ich bignum
verwende, nicht explizit angeben muss.
Dies ist sinnvoll, da auf der Dokumentationsebene Beispiele zeigen, wie die Funktionalität eines bestimmten Teils Ihrer Kiste funktionieren sollte. Sie verwenden also bignum
unabhängig davon. cargo erkennt dies und importiert bignum
für Sie. Das Beispiel für sollte lauten: