Der Konstruktor der Tuple-Struktur beschwert sich über private Felder

10

Ich arbeite an einem grundlegenden Shell-Interpreter, um mich mit Rust vertraut zu machen. Bei der Arbeit an der Tabelle zum Speichern suspendierter Jobs in der Shell bin ich bei der folgenden Compiler-Fehlermeldung hängen geblieben:

%Vor%

Es ist mir unklar, was hier als privat angesehen wird. Wie Sie unten sehen können, sind beide Strukturen mit pub in meiner Moduldatei markiert. Also, was ist die geheime Soße?

%Vor%     
Grubermensch 08.06.2014, 21:22
quelle

1 Antwort

15

Wie die Fehlermeldung andeutet, ist das Problem JobsList hat ein privates Feld, das heißt, auf den Wert Vec<Job> kann nicht außerhalb des Moduls zugegriffen werden, das struct definiert. Dies bedeutet, dass Sie keine Mustererkennung für einen JobsList -Wert erstellen können, um ihn zu extrahieren, und dass Sie ihn nicht direkt erstellen können.

Es gibt zwei Fixes:

  • mache das Feld öffentlich pub struct JobsList(pub Vec<Job>);
  • stellt einen öffentlichen Konstruktor bereit

    %Vor%

    wird wie JobsList::new(vec![]) aufgerufen.

huon 09.06.2014, 00:54
quelle

Tags und Links