Ungelöster Import in Dokumentationsbeispiel

9

Ich habe Schwierigkeiten, einen Fehler in meinem Dokumentationsbeispiel für meine Bibliothek zu beheben. Ich habe die Dateistruktur wie für meine Kiste bignum

%Vor%

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

zu importieren %Vor%

Wenn ich cargo test starte, erhalte ich diesen Fehler

%Vor%

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

ändere %Vor%

es kompiliert aber gut. Wie kann ich meine Module korrekt importieren?

    
Syntactic Fructose 26.07.2015, 14:43
quelle

2 Antworten

10

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 .

    
Shepmaster 26.07.2015, 16:02
quelle
3

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:

%Vor%     
Syntactic Fructose 26.07.2015 15:27
quelle

Tags und Links